Consulta MYSQL / fechas anteriores a 1 semana atrás (todas las fechas en UTC)

89

¿Cómo consulto una base de datos mysql para devolver todos los registros con una fecha y hora anterior a 1 semana atrás? Tenga en cuenta que la tabla de fecha y hora almacena todo en UTC, y debería compararlo en eso mismo.

Para que quede claro, estoy buscando una consulta mysql pura.

tzmatt7447
fuente

Respuestas:

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

Si su tabla almacena las fechas y horas en una zona horaria diferente a la que NOW()devuelve, puede usarla UTC_TIMESTAMP()en su lugar para obtener la marca de tiempo en UTC.

reko_t
fuente
18
SELECT * FROM table WHERE DATEDIFF(NOW(),colname) > 7;
Sajjad Shirazy
fuente
5
Si bien este código puede responder a la pregunta, proporcionar un contexto adicional sobre por qué y / o cómo este código responde a la pregunta mejora su valor a largo plazo.
JAL
este es más corto, ¿debería usar este?
moeiscool
3
Tal vez esto sea más corto, pero ¿cómo podría usar un índice?
swdev
13
SELECT SUBDATE('2008-01-02', 7);

O

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

Resultado:

2007-12-26

Michael Pakhantsov
fuente