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?
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
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.
Sie sind fast da: es ist NOW() - INTERVAL 1 DAY
Sicher kannst du:
SELECT * FROM table
WHERE DateStamp > DATE_ADD(NOW(), INTERVAL -1 DAY)
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)
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