从NOW()-1天中选择记录

时间:2011-12-17 11:35:51

标签: mysql select where datestamp

在MySQL语句中是否有办法通过> = NOW()-1订购记录(通过日期戳),以便选择今天前一天到未来的所有记录?

6 个答案:

答案 0 :(得分:205)

根据documentation for date/time functions判断,您应该可以执行以下操作:

SELECT * FROM FOO
WHERE MY_DATE_FIELD >= NOW() - INTERVAL 1 DAY

答案 1 :(得分:47)

请注意,结果可能与您预期的略有不同。

NOW()返回DATETIME

INTERVAL的作用是命名的,例如INTERVAL 1 DAY = 24 hours

因此,如果您的脚本在03:00处运行,则会错过first three hours of records from the 'oldest' day

要全天使用CURDATE() - INTERVAL 1 DAY。无论脚本何时运行,这都将返回到前一天的开头。

答案 2 :(得分:14)

你几乎就在那里:它是NOW() - INTERVAL 1 DAY

答案 3 :(得分:7)

当然可以:

SELECT * FROM table
WHERE DateStamp > DATE_ADD(NOW(), INTERVAL -1 DAY)

答案 4 :(得分:1)

使用tdDATE_ADD找不到正确的答案:

DATE_SUB减去1天

NOW()

...WHERE DATE_FIELD >= DATE_SUB(NOW(), INTERVAL 1 DAY) 起添加1天

NOW()

答案 5 :(得分:0)

当搜索字段为时间戳并且您想要查找昨天0小时和今天0小时的记录时使用构造

MY_DATE_TIME_FIELD between makedate(year(now()), date_format(now(),'%j')-1) and makedate(year(now()), date_format(now(),'%j'))  

而不是

 now() - interval 1 day