it-swarm.com.de

Wählen Sie Datensätze aus JETZT () -1 Tag aus

Gibt es eine Möglichkeit in einer MySQL-Anweisung, Datensätze (durch einen Datumsstempel) mit> = NOW () -1 anzuordnen, sodass alle Datensätze vom Tag vor heute bis in die Zukunft ausgewählt werden?

100
user1092780

Gemessen an der Dokumentation für Datums Zeitfunktionen -/sollten Sie in der Lage sein, Folgendes zu tun:

SELECT * FROM FOO
WHERE MY_DATE_FIELD >= NOW() - INTERVAL 1 DAY
196
Jon Skeet

Beachten Sie, dass das Ergebnis möglicherweise etwas anders ist als erwartet. 

NOW() gibt eine DATETIME zurück. 

Und INTERVAL arbeitet wie benannt, z. INTERVAL 1 DAY = 24 hours

Wenn Ihr Skript also unter 03:00 ausgeführt werden soll, wird es first three hours of records from the 'oldest' day fehlen.

Um den ganzen Tag zu erhalten, benutze CURDATE() - INTERVAL 1 DAY. Dadurch wird unabhängig vom Ausführungszeitpunkt des Skripts wieder der Beginn des vorherigen Tages angezeigt.

44

Sie sind fast da: es ist NOW() - INTERVAL 1 DAY

14
dasblinkenlight

Sicher kannst du:

SELECT * FROM table
WHERE DateStamp > DATE_ADD(NOW(), INTERVAL -1 DAY)
7

Keine Antworten mit DATE_ADD oder DATE_SUB gefunden:

Subtrahiere 1 Tag von NOW()

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

1 Tag hinzufügen von NOW()

...WHERE DATE_FIELD >= DATE_ADD(NOW(), INTERVAL 1 DAY)
0
Andrew Atkinson

wenn das Suchfeld Zeitstempel ist und Sie Datensätze von 0 Stunden gestern und 0 Stunden heute suchen möchten, verwenden Sie die Konstruktion

MY_DATE_TIME_FIELD between makedate(year(now()), date_format(now(),'%j')-1) and makedate(year(now()), date_format(now(),'%j'))  

stattdessen 

 now() - interval 1 day
0
Michael de Oz