Esiste un modo in un'istruzione MySQL per ordinare i record (tramite un timbro data) di> = NOW () -1 in modo da selezionare tutti i record dall'oggi al futuro?
Esiste un modo in un'istruzione MySQL per ordinare i record (tramite un timbro data) di> = NOW () -1 in modo da selezionare tutti i record dall'oggi al futuro?
Risposte:
A giudicare dalla documentazione per le funzioni di data / ora , dovresti essere in grado di fare qualcosa come:
SELECT * FROM FOO
WHERE MY_DATE_FIELD >= NOW() - INTERVAL 1 DAY
Tieni presente che il risultato potrebbe essere leggermente diverso da quello che ti aspetti.
NOW()
restituisce a DATETIME
.
E INTERVAL
funziona come indicato, ad es INTERVAL 1 DAY = 24 hours
.
Quindi, se il tuo script deve essere eseguito su cron 03:00
, perderà ilfirst three hours of records from the 'oldest' day
.
Per ottenere tutto il giorno usare CURDATE() - INTERVAL 1 DAY
. Questo tornerà all'inizio del giorno precedente indipendentemente da quando viene eseguito lo script.
Ci sei quasi: è NOW() - INTERVAL 1 DAY
Certo che puoi:
SELECT * FROM table
WHERE DateStamp > DATE_ADD(NOW(), INTERVAL -1 DAY)
DATE_ADD
quindi -1 day
.
Non sono state visualizzate correttamente le risposte utilizzando DATE_ADD
o DATE_SUB
:
Sottrai 1 giorno da NOW()
...WHERE DATE_FIELD >= DATE_SUB(NOW(), INTERVAL 1 DAY)
Aggiungi 1 giorno da NOW()
...WHERE DATE_FIELD >= DATE_ADD(NOW(), INTERVAL 1 DAY)
quando il campo di ricerca è il timestamp e vuoi trovare i record di 0 ore ieri e 0 ore oggi usa la costruzione
MY_DATE_TIME_FIELD between makedate(year(now()), date_format(now(),'%j')-1) and makedate(year(now()), date_format(now(),'%j'))
anziché
now() - interval 1 day