在MySQL语句中是否有一种方法可以通过〉= NOW()-1对记录进行排序(通过日期戳),以便选择从今天到未来的所有记录?
t2a7ltrp1#
根据日期/时间函数的文档判断,您应该能够执行以下操作:
SELECT * FROM FOO WHERE MY_DATE_FIELD >= NOW() - INTERVAL 1 DAY
oprakyz72#
请注意,结果可能与您预期的略有不同。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获取一整天的时间。无论脚本何时运行,这都将返回到前一天的开始。
NOW()
DATETIME
INTERVAL
INTERVAL 1 DAY = 24 hours
03:00
first three hours of records from the 'oldest' day
CURDATE() - INTERVAL 1 DAY
5anewei63#
使用DATE_ADD或DATE_SUB时未看到任何正确答案:
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)
jckbn6z74#
就快到了:是NOW() - INTERVAL 1 DAY
NOW() - INTERVAL 1 DAY
wz8daaqr5#
当然可以:
SELECT * FROM table WHERE DateStamp > DATE_ADD(NOW(), INTERVAL -1 DAY)
vfh0ocws6#
当搜索字段是时间戳,并且您希望查找昨天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
hts6caw37#
试试这个:SELECT * FROM FOO WHERE MY_DATE_FIELD〉= NOW()- INTERVAL '1' DAY
7条答案
按热度按时间t2a7ltrp1#
根据日期/时间函数的文档判断,您应该能够执行以下操作:
oprakyz72#
请注意,结果可能与您预期的略有不同。
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
获取一整天的时间。无论脚本何时运行,这都将返回到前一天的开始。5anewei63#
使用
DATE_ADD
或DATE_SUB
时未看到任何正确答案:NOW()
减去1天从
NOW()
开始加1天jckbn6z74#
就快到了:是
NOW() - INTERVAL 1 DAY
wz8daaqr5#
当然可以:
vfh0ocws6#
当搜索字段是时间戳,并且您希望查找昨天0小时和今天0小时的记录时,使用构造
取而代之
hts6caw37#
试试这个:SELECT * FROM FOO WHERE MY_DATE_FIELD〉= NOW()- INTERVAL '1' DAY