我試圖從最近2小時中選擇行。由於某種原因,它不起作用。代碼語法看起來不錯,適用於其他表格,但由於某種原因,在表格Posts
上使用時,得到的行比2小時早得多。DATETIME從最近2小時中選擇行
SELECT * FROM Posts WHERE `Date` > SUBDATE(CURRENT_DATE, INTERVAL 2 HOUR)
代碼有問題嗎?有沒有其他的方式來寫它?這可能是什麼原因?
我試圖從最近2小時中選擇行。由於某種原因,它不起作用。代碼語法看起來不錯,適用於其他表格,但由於某種原因,在表格Posts
上使用時,得到的行比2小時早得多。DATETIME從最近2小時中選擇行
SELECT * FROM Posts WHERE `Date` > SUBDATE(CURRENT_DATE, INTERVAL 2 HOUR)
代碼有問題嗎?有沒有其他的方式來寫它?這可能是什麼原因?
那是因爲你使用CURRENT_DATE
,你應該使用NOW()
或CURRENT_TIMESTAMP
代替。
的問題是,使用CURRENT_DATE
,作爲一個日期值,時間默認爲00:00:00
,所以通過減去2小時你最終得到的前一天22:00:00
,而不是最後2小時... ...
改成這樣:
SELECT * FROM Posts WHERE `Date` > SUBDATE(CURRENT_TIMESTAMP, INTERVAL 2 HOUR)
你可以用簡單的符號:
SELECT * FROM Posts WHERE `Date` > NOW() - INTERVAL 2 HOUR
你可以試試這個
SELECT * FROM Posts WHERE `Date` > DATE_SUB(CURDATE(), INTERVAL 3 HOUR)
'CURRENT_DATE'沒有時間部分,所以當你減去2小時你是從午夜減去。檢查我的答案。 –