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

问题描述 投票:0回答:7

在 MySQL 语句中是否有一种方法可以通过 >= NOW() -1 对记录进行排序(通过日期戳),以便选择从前一天到未来的所有记录?

mysql select where-clause datestamp
7个回答
406
投票

根据日期/时间函数的文档,你应该能够做这样的事情:

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

78
投票

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

NOW()
返回
DATETIME

INTERVAL
按名称工作,例如
INTERVAL 1 DAY = 24 hours

因此,如果您的脚本被 cron'd 运行在

03:00
,它将错过
first three hours of records from the 'oldest' day

要整天使用

CURDATE() - INTERVAL 1 DAY
。无论脚本何时运行,这都会回到前一天的开始。


25
投票

没有看到任何正确使用

DATE_ADD
DATE_SUB
的答案:

NOW()

中减去1天
...WHERE DATE_FIELD >= DATE_SUB(NOW(), INTERVAL 1 DAY)

NOW()

增加1天
...WHERE DATE_FIELD >= DATE_ADD(NOW(), INTERVAL 1 DAY)

23
投票

你快到了:它是

NOW() - INTERVAL 1 DAY


8
投票

当然可以:

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

1
投票

当搜索字段是时间戳并且你想查找从昨天 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

0
投票

试试这个: 从 FOO 选择 * WHERE MY_DATE_FIELD >= NOW() - INTERVAL '1' DAY

© www.soinside.com 2019 - 2024. All rights reserved.