Zapytanie / daty MYSQL starsze niż 1 tydzień temu (wszystkie daty w UTC)

89

Jak wysłać zapytanie do bazy danych mysql, aby zwrócić wszystkie rekordy z datą i godziną starszą niż 1 tydzień temu. Zauważ, że tabela datetime przechowuje wszystko w UTC i powinienem porównać to w tym samym.

Żeby było jasne - szukam czystego zapytania mysql.

tzmatt7447
źródło

Odpowiedzi:

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

Jeśli Twoja tabela przechowuje daty w innej strefie czasowej niż ta, która NOW()zwraca, możesz użyć UTC_TIMESTAMP()zamiast tego, aby uzyskać sygnaturę czasową w UTC.

reko_t
źródło
18
SELECT * FROM table WHERE DATEDIFF(NOW(),colname) > 7;
Sajjad Shirazy
źródło
5
Chociaż ten kod może odpowiedzieć na pytanie, zapewnia dodatkowy kontekst dotyczący tego, dlaczego i / lub jak ten kod odpowiada, poprawia jego długoterminową wartość.
JAL
ten jest krótszy, czy powinienem użyć tego?
moeiscool
3
Może to jest krótsze, ale w jaki sposób można by użyć indeksu.
swdev
13
SELECT SUBDATE('2008-01-02', 7);

LUB

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

Wynik:

2007-12-26

Michael Pakhantsov
źródło