Select records from NOW() -1 Day

前端 未结 6 1592
没有蜡笔的小新
没有蜡笔的小新 2020-12-04 13:38

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?

相关标签:
6条回答
  • 2020-12-04 14:12

    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
    
    0 讨论(0)
  • 2020-12-04 14:13

    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.

    0 讨论(0)
  • 2020-12-04 14:25

    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
    
    0 讨论(0)
  • 2020-12-04 14:25

    Sure you can:

    SELECT * FROM table
    WHERE DateStamp > DATE_ADD(NOW(), INTERVAL -1 DAY)
    
    0 讨论(0)
  • 2020-12-04 14:26

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

    0 讨论(0)
  • 2020-12-04 14:30

    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)
    
    0 讨论(0)
提交回复
热议问题