4

我正在尝试计算在 X 小时或 X 天内插入的数据库中表中的行数。我已经反复尝试,但我不断收到空集的响应。

我表中的 start_stamp 列格式如下:2013-08-07 18:18:37

我尝试了很多变化: select * from mytable where start_stamp = now() interval -1 day;

但一切都无济于事。有人可以告诉我我做错了什么吗?

4

2 回答 2

3

您需要大于或等于该范围的行,而不是选择start_stamp等于行。此外,您的语法有点偏离。MySQL的日期算术使用,所以你需要:now() - 1daycolumn_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()

于 2013-08-09T03:02:40.823 回答
1

这里有一些例子......

过去 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;
于 2013-08-09T03:03:26.360 回答