我正在尝试计算数据库中在X小时或X天内插入的表中的行。我曾多次尝试,但我一直得到空集。
我表格中的start_stamp列的格式如下:2013-08-07 18:18:37
我尝试了很多变化: select * from mytable where start_stamp = now()interval -1 day;
但一切都无济于事。有人能告诉我我做错了吗?
答案 0 :(得分: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文档中描述in a small paragraph beneath the DATE_ADD()
function reference。
答案 1 :(得分: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;