2011-09-23 94 views
0

我嘗試從數據時間從現在起1分鐘的表中選擇那些行。我嘗試這樣做以下列方式:date_add和interval如何在MySQL中工作?

SELECT datetime FROM my_table 
WHERE datetime > date_add(curdate() , INTERVAL -1 MINUTE) 

這就是我得到:

2011-09-23 02:39:53 
2011-09-23 08:10:07 

東西顯然是不對的。有人知道爲什麼嗎?

ADDED

它看起來非常奇怪。如果我使用interval -1 hour,我得到的結果是4或7小時(我不應該得到它們),但我會過濾14小時以上的結果。這怎麼可能?

+0

使用'now()'而不是'curdate()' – Johan

回答

5

從過去一分鐘,以在未來的某分:

SELECT * FROM my_table 
WHERE datetime BETWEEN 
    DATE_ADD(NOW(), INTERVAL -1 MINUTE) AND 
    DATE_ADD(NOW(), INTERVAL 1 MINUTE) 

從現在到一分鐘以後:

SELECT * FROM my_table 
WHERE datetime BETWEEN 
    NOW() AND 
    DATE_ADD(NOW(), INTERVAL 1 MINUTE) 

一分鐘過去到現在:

SELECT * FROM my_table 
WHERE datetime BETWEEN 
    DATE_ADD(NOW(), INTERVAL -1 MINUTE) AND 
    NOW() 
+0

它在我看來,第一個查詢應返回結果哪一個從現在開始,在1分鐘內回到過去和未來。第二個查詢應返回從現在到未來1分鐘內的結果。 – Roman

+0

@羅曼:是的,確切地說。這不是你需要的嗎? – Marco

+0

@羅曼:編輯我的帖子,以涵蓋所有情況......我懷疑我不明白你的問題... – Marco