Czy istnieje sposób w wyciągu MySQL, aby uporządkować rekordy (za pomocą znacznika daty) przez> = NOW () -1, aby zostały wybrane wszystkie rekordy od dnia poprzedzającego dzisiaj do przyszłości?
148
Sądząc po dokumentacji funkcji daty / czasu , powinieneś być w stanie zrobić coś takiego:
SELECT * FROM FOO
WHERE MY_DATE_FIELD >= NOW() - INTERVAL 1 DAY
Pamiętaj, że wynik może się nieco różnić od oczekiwanego.
NOW()
zwraca aDATETIME
.I
INTERVAL
działa jak nazwa, npINTERVAL 1 DAY = 24 hours
.Więc jeśli skrypt jest cron'd do uruchomienia na
03:00
, to przegapićfirst three hours of records from the 'oldest' day
.Aby uzyskać użytek przez cały dzień
CURDATE() - INTERVAL 1 DAY
. Spowoduje to powrót do początku poprzedniego dnia, niezależnie od tego, kiedy skrypt zostanie uruchomiony.źródło
Już prawie koniec: to jest
NOW() - INTERVAL 1 DAY
źródło
Nie widziałem żadnych poprawnych odpowiedzi przy użyciu
DATE_ADD
lubDATE_SUB
:Odejmij 1 dzień od
NOW()
Dodaj 1 dzień od
NOW()
źródło
Oczywiście że możesz:
SELECT * FROM table WHERE DateStamp > DATE_ADD(NOW(), INTERVAL -1 DAY)
źródło
DATE_ADD
wtedy-1 day
.gdy pole wyszukiwania to znacznik czasu i chcesz znaleźć rekordy z 0 wczoraj i 0 godzin dzisiaj, użyj konstrukcji
zamiast
źródło