我正在尝试计算在 X 小时或 X 天内插入的数据库中表中的行数。我已经反复尝试,但我不断收到空集的响应。
我表中的 start_stamp 列格式如下:2013-08-07 18:18:37
我尝试了很多变化: select * from mytable where start_stamp = now() interval -1 day;
但一切都无济于事。有人可以告诉我我做错了什么吗?
您需要大于或等于该范围的行,而不是选择start_stamp
等于的行。此外,您的语法有点偏离。MySQL的日期算术使用,所以你需要:now() - 1day
column_value - INTERVAL <number> <period>
SELECT COUNT(*) AS num_new_rows
FROM mytable
WHERE start_stamp >= NOW() - INTERVAL 1 DAY
同样要在n小时前获取,请使用INTERVAL n HOUR
# Within 3 hours...
WHERE start_stamp >= NOW() - INTERVAL 3 HOUR
日期间隔算术的语法在 MySQL 官方文档中函数参考下方的一小段中进行了描述。DATE_ADD()
这里有一些例子......
过去 6 小时内的所有条目:
select * from mytable where start_stamp >= now() - interval 6 hour;
过去 2 天内的所有条目:
select * from mytable where start_stamp >= now() - interval 2 day;
过去 2 1/2 天内的所有条目:
select * from mytable where start_stamp >= now() - interval 2 day - interval 12 hour;