在MySQL数据库中计算时间戳在X时间间隔内的行数

4
我正在尝试计算数据库表中在X小时或X天内插入的行数。我已经尝试了很多次,但每次都得到空集响应。
我的表中的start_stamp列格式如下:2013-08-07 18:18:37
我已经尝试了很多变化: select * from mytable where start_stamp = now() interval -1 day;
但是一直没有成功。请问我做错了什么?

你的查询有什么问题?start_stamp的类型是什么? - Gordon Linoff
2个回答

3

与其选择start_stamp等于now() - 1day的行,你需要选择它大于或等于该范围的行。此外,你的语法有点错误。MySQL的日期运算使用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()函数的参考说明下面的一小段文字介绍了日期间隔算术的语法。

start_stamp 列上创建一个索引将有助于提高此查询的性能。 - O. Jones

1

以下是一些例子...

过去6小时内的所有条目:

select * from mytable where start_stamp >= now() - interval 6 hour;

过去2天内的所有条目:
select * from mytable where start_stamp >= now() - interval 2 day;

过去2.5天内的所有条目:
select * from mytable where start_stamp >= now() - interval 2 day - interval 12 hour;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接