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.

tzmatt7447
quelle

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 .

reko_t
quelle
18
SELECT * FROM table WHERE DATEDIFF(NOW(),colname) > 7;
Sajjad Shirazy
quelle
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

Michael Pakhantsov
quelle