我有一个列date
,其默认值为CURRENT_TIMESTAMP
,例如:2011-11-16 15:34:02
。有没有办法在mysql语句中放入一个条件(不是在php中)来检索不到一天的行?类似的东西:
SELECT * FROM orders where date > 24 hours ago
答案 0 :(得分:22)
您可以使用timestampadd()
获取24小时前的时间戳
SELECT * FROM orders WHERE `date` > timestampadd(hour, -24, now());
这相当于
SELECT * FROM orders WHERE `date` > timestampadd(day, -1, now());
答案 1 :(得分:8)
SELECT *
FROM orders
WHERE DATE(`date`) = DATE(NOW() - INTERVAL 1 DAY)
请注意date
周围的反引号,因为它是一个保留字。
答案 2 :(得分:0)
是的,将* date_sub *与间隔1天和 curdate()结合起来 请参阅此处的文档http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-sub
答案 3 :(得分:0)
你也可以直接使用timestampdiff
函数的差异,类似于timestampadd
。
SELECT * FROM orders WHERE TIMESTAMPDIFF(HOUR, date, NOW()) > 24;
我认为这不能像使用timestampadd
一样进行优化(因为它会计算每一行的差异),但在我看来,它更具可读性,如果你没有&# 39;关心优化。
答案 4 :(得分:0)