2011-02-23 13 views
29

Tengo un campo llamado timestamp. Esta es la última vez que un miembro se ha autentificado. Busco para incluir una cláusula where de una consulta por algo así como¿Cómo consigo Timestamp menos 6 semanas en MySQL?

WHERE timestamp > todays date - 6 weeks 

¿Cómo voy a hacer esto? Estoy tratando de incluir solo a los usuarios que iniciaron sesión en las últimas 6 semanas.

Gracias

Respuesta

6
where column>=date_sub(now(), interval 6 week) 
47

Me parece sintaxis más legible que date_sub, pero de cualquier manera funciona.

WHERE timestamp >= NOW() - INTERVAL 6 WEEK 

Si quieres ir por "Hoy" (medianoche) en lugar de "ahora" (tiempo actual), puede utilizar esta

WHERE timestamp >= DATE(NOW()) - INTERVAL 6 WEEK 
+3

No que deben estar donde timestamp> = UNIX_TIMESTAMP (NOW() - INTERVALO DE SEMANA 6)? –

+0

La forma en que está escrita mi respuesta funciona bien. Lo sé, porque hago esto regularmente. Recomiendo no agregar 'UNIX_TIMESTAMP' a la cláusula where, ya que es inusual y no es necesario hacerlo de esa manera. –

+0

Es bueno saber que esto funciona. Acabo de encontrar [esta pregunta] (http://stackoverflow.com/questions/3886269/can-i-compare-mysql-timestamp-with-datetime-columns-is-it-bad) sobre el tema. –

3

This link demuestra cómo se puede adquirir una marca de tiempo de hoy Usando el formato DATE_ADD(CURDATE(), INTERVAL -1 DAY), por lo tanto, la consulta probablemente sería:

WHERE timestamp > DATE_ADD(CURDATE(), INTERVAL -42 DAY) 
+0

Esto no está funcionando? La marca de tiempo de campo es un formato de marca de tiempo. ¿Es esta la pregunta de marcas de tiempo? – sark9012

+0

Intenta usar NOW() en su lugar. Supongo que asumí erróneamente CURDATE() podría ser convertido a un tipo de indicación de fecha y hora – Neil

-1

habido suerte todavía. ¿Has probado:

>= DATE_SUB(NOW(), INTERVAL 6 WEEK) 
+2

-1 Esto es exactamente lo mismo que la respuesta ajreal ya provista 5 meses antes. http://stackoverflow.com/a/5091428/463304 –

2

Puede utilizar el medio y now():

select somevalue 
from yourtable 
where yourtimestamp between now() - interval 1 day and now() 
Cuestiones relacionadas