Выберите записи СЕЙЧАС () -1 день - PullRequest
107 голосов
/ 17 декабря 2011

Есть ли способ в операторе MySQL упорядочить записи (с помощью отметки даты) по> = NOW () -1, чтобы были выбраны все записи за день до сегодняшнего дня?

Ответы [ 6 ]

212 голосов
/ 17 декабря 2011

Судя по документации для функций даты / времени , у вас должно получиться что-то вроде:

SELECT * FROM FOO
WHERE MY_DATE_FIELD >= NOW() - INTERVAL 1 DAY
47 голосов
/ 06 июня 2014

Имейте в виду, что результат может немного отличаться от ожидаемого.

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. Это вернется к началу предыдущего дня независимо от времени запуска сценария.

14 голосов
/ 17 декабря 2011

Ты почти там: это NOW() - INTERVAL 1 DAY

7 голосов
/ 17 декабря 2011

Конечно, вы можете:

SELECT * FROM table
WHERE DateStamp > DATE_ADD(NOW(), INTERVAL -1 DAY)
1 голос
/ 03 августа 2018

Не нашли правильных ответов, используя DATE_ADD или DATE_SUB:

Вычтите 1 день из NOW()

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

Добавить 1 день с NOW()

...WHERE DATE_FIELD >= DATE_ADD(NOW(), INTERVAL 1 DAY)
0 голосов
/ 20 июля 2016

, когда поле поиска имеет метку времени, и вы хотите найти записи из 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...