2017-01-02 113 views
3

最接近的日期我有如下表MySQL的選擇從今天

date 
----------------------- 
1. 2017-01-02 20:59:00 
2. 2017-01-04 10:00:00 
3. 2017-01-04 11:00:00 
4. 2017-01-09 17:20:00 

Q1:假設今天是2017-01-03,我怎麼能選擇上面的日期得到的2和3的結果呢?

Q2:假設今天是2017-01-05,得到4的結果?

+0

難道是精確到換一種說法爲「選擇較當前日期越大所有時間?」 –

+0

正如在這個答案上顯示的,http://stackoverflow.com/questions/6186962/sql-query-to-show-nearest-date, ORDER BY ABS(DATEDIFF(Field,NOW())) –

+0

@DanFarrell是的,但我想它不到2017年1月5日的Q1(我不想日期NO4顯示) – sxio

回答

1

試試這個:

select `date` 
from your_table 
where date(`date`) = (select min(date(`date`)) 
    from your_table 
    where date(`date`) > date(now()) 
); 
+0

賓果,謝謝你的解決方案,它的完美! – sxio

0

試試這個:

SELECT * 
FROM Table 
WHERE datecol > NOW() 
AND datecol < CURDATE() + INTERVAL 1 DAY 
LIMIT 1 
-1

試試這個,

select top 1 * from tblDate where date >GETDATE() order by date asc 
+0

這是sql server不是mysql! –

+0

但有sql標記,他沒有提到明確的數據庫服務器 –

+0

這是標題中的第一個詞 –

0

Q1回答:

SELECT 
    * 
FROM 
    closest_date_table 
WHERE 
    date(`date`) = (
     SELECT 
      min(date(`date`)) 
     FROM 
      closest_date_table 
     WHERE 
      date(`date`) > date('2017-01-03') 
    ); 

Q2答:

SELECT 
    * 
FROM 
    closest_date_table 
WHERE 
    date(`date`) = (
     SELECT 
      min(date(`date`)) 
     FROM 
      closest_date_table 
     WHERE 
      date(`date`) > date('2017-01-05') 
    ); 

LIVE SQL FIDDLE DEMO