它看起來像你沒有正確地制定你的WHERE
條款。試試這樣:
WHERE my_datetime BETWEEN NOW() - INTERVAL 3600 SECOND AND NOW()
INTERVAL...
形式的時間算術需要你給出時間單位。 available units are MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, and YEAR.
my_datetime
列的數據類型很重要。除非你向我們透露它,否則很難給出確切的答案。
如果列同時包含日期和時間,並要在廣泛範圍的日期過濾器,你可以這樣做:
WHERE DATE(my_datetime) BETWEEN DATE(NOW()) - 25 YEAR /* slow !!! */
AND DATE(NOW())
但是,該DATE()
功能適用於您的列,所以防止使用索引。
你需要這樣的:
WHERE my_datetime >= CURDATE() - 25 YEAR
AND my_datetime < CURDATE() + 1 DAY
這將拿起my_datetime之前的所有值,但不包括明天午夜。
請注意,您可以在INTERVAL子句中使用非常大的值(雙精度浮點數)。例如,這兩個值產生相同的結果。
NOW()+ INTERVAL 100000 DAY
NOW()+ INTERVAL 8640000000000000 MICROSECOND
在評論中,你提到了一些關於需要日期過濾器的內容。請[編輯]您的問題以包含您的完整要求。 –