它看起来像你没有正确地制定你的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
在评论中,你提到了一些关于需要日期过滤器的内容。请[编辑]您的问题以包含您的完整要求。 –