MYSQL-Abfrage / Daten älter als vor 1 Woche (alle Daten in UTC)


87

Wie frage ich eine MySQL-Datenbank ab, um alle Datensätze mit einer Datumszeit zurückzugeben, die älter als 1 Woche ist? Beachten Sie, dass die datetime-Tabelle alles in UTC speichert, und ich sollte es darin selbst vergleichen.

Nur um klar zu sein - ich suche eine reine MySQL-Abfrage.

Antworten:


212
SELECT * FROM tbl WHERE datetime < NOW() - INTERVAL 1 WEEK

Wenn Ihre Tabelle Datumsangaben in einer anderen Zeitzone als der zurückgegebenen speichert NOW(), können Sie UTC_TIMESTAMP()stattdessen den Zeitstempel in UTC abrufen .


18
SELECT * FROM table WHERE DATEDIFF(NOW(),colname) > 7;

5
Während dieser Code die Frage möglicherweise beantwortet, verbessert die Bereitstellung eines zusätzlichen Kontexts darüber, warum und / oder wie dieser Code die Frage beantwortet, ihren langfristigen Wert.
JAL

Dieser ist kürzer, sollte ich diesen verwenden?
Moeiscool

2
Vielleicht ist dies kürzer, aber wie könnte es einen Index verwenden.
Swdev

12
SELECT SUBDATE('2008-01-02', 7);

ODER

SELECT SUBDATE(now(), INTERVAL 1 week);

Ergebnis:

2007-12-26

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.