从 NOW() -1 天选择记录

发布于 2024-12-21 14:15:16 字数 75 浏览 1 评论 0原文

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

Is there a way in a MySQL statement to order records (through a date stamp) by >= NOW() -1 so all records from the day before today to the future are selected?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

狼性发作 2024-12-28 14:15:16

根据日期/时间函数的文档,您应该能够执行以下操作:

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

Judging by the documentation for date/time functions, you should be able to do something like:

SELECT * FROM FOO
WHERE MY_DATE_FIELD >= NOW() - INTERVAL 1 DAY
短叹 2024-12-28 14:15:16

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

NOW() 返回一个 DATETIME

INTERVAL 的工作方式与命名的一样,例如INTERVAL 1 DAY = 24 小时

因此,如果您的脚本被安排在 03:00 运行,它将错过“最旧”一天的前三个小时的记录

要获取一整天,请使用CURDATE() - INTERVAL 1 DAY。无论脚本何时运行,这都会返回到前一天的开始。

Be aware that the result may be slightly different than you expect.

NOW() returns a DATETIME.

And INTERVAL works as named, e.g. INTERVAL 1 DAY = 24 hours.

So if your script is cron'd to run at 03:00, it will miss the first three hours of records from the 'oldest' day.

To get the whole day use CURDATE() - INTERVAL 1 DAY. This will get back to the beginning of the previous day regardless of when the script is run.

oО清风挽发oО 2024-12-28 14:15:16

使用 DATE_ADDDATE_SUB 没有看到任何正确答案:

NOW() 中减去 1 天

...WHERE DATE_FIELD >= DATE_SUB(NOW(), INTERVAL 1 DAY)

NOW() 添加 1 天

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

Didn't see any answers correctly using DATE_ADD or DATE_SUB:

Subtract 1 day from NOW()

...WHERE DATE_FIELD >= DATE_SUB(NOW(), INTERVAL 1 DAY)

Add 1 day from NOW()

...WHERE DATE_FIELD >= DATE_ADD(NOW(), INTERVAL 1 DAY)
空心↖ 2024-12-28 14:15:16

你已经快到了:NOW() - INTERVAL 1 DAY

You're almost there: it's NOW() - INTERVAL 1 DAY

狼亦尘 2024-12-28 14:15:16

当然你可以:

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

Sure you can:

SELECT * FROM table
WHERE DateStamp > DATE_ADD(NOW(), INTERVAL -1 DAY)
浮世清欢 2024-12-28 14:15:16

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

when search field is timestamp and you want find records from 0 hours yesterday and 0 hour today use construction

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

instead

 now() - interval 1 day
地狱即天堂 2024-12-28 14:15:16

试试这个:
从 FO 选择 *
WHERE MY_DATE_FIELD >= NOW() - 间隔“1”天

try this:
SELECT * FROM FOO
WHERE MY_DATE_FIELD >= NOW() - INTERVAL '1' DAY

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文