2012-11-19 16 views
9

我試圖從最近2小時中選擇行。由於某種原因,它不起作用。代碼語法看起來不錯,適用於其他表格,但由於某種原因,在表格Posts上使用時,得到的行比2小時早得多。DATETIME從最近2小時中選擇行

SELECT * FROM Posts WHERE `Date` > SUBDATE(CURRENT_DATE, INTERVAL 2 HOUR) 

代碼有問題嗎?有沒有其他的方式來寫它?這可能是什麼原因?

+0

'CURRENT_DATE'沒有時間部分,所以當你減去2小時你是從午夜減去。檢查我的答案。 –

回答

6

那是因爲你使用CURRENT_DATE,你應該使用NOW()CURRENT_TIMESTAMP代替。

的問題是,使用CURRENT_DATE,作爲一個日期值,時間默認爲00:00:00,所以通過減去2小時你最終得到的前一天22:00:00,而不是最後2小時... ...

6

改成這樣:

SELECT * FROM Posts WHERE `Date` > SUBDATE(CURRENT_TIMESTAMP, INTERVAL 2 HOUR) 
16

你可以用簡單的符號:

SELECT * FROM Posts WHERE `Date` > NOW() - INTERVAL 2 HOUR 
1

你可以試試這個

SELECT * FROM Posts WHERE `Date` > DATE_SUB(CURDATE(), INTERVAL 3 HOUR)