¿Cómo verificar registros que sean más antiguos que hoy en PHP?

Configuré un campo de marca de tiempo con un conjunto adicional en ON UPDATE CURRENT_TIMESTAMP. Funciona pero tengo una pregunta:

Me gustaría verificar todos los registros que sean más antiguos que los de hoy, ¿cómo lo haría?

preguntado el 16 de mayo de 11 a las 20:05

¿Más viejo que hoy o más de 24 horas? -

4 Respuestas

También puede usar date_sub para hacerlo más fácil

SELECT * FROM table WHERE timestamp_info < DATE_SUB(NOW(), INTERVAL 1 DAY);

contestado el 17 de mayo de 11 a las 00:05

SELECT * 
FROM {your_table} 
WHERE {time_stamp_field} < CURDATE()

O podrías hacer

SELECT * 
FROM  {your_table}
WHERE {time_stamp_field} <= DATE_SUB( CURDATE(), INTERVAL 1 DAY )

Entonces si CURDATE() devuelve 2011-05-16, DATE_SUB( CURDATE(), INTERVAL 1 DAY ) evalúa a 2011-05-15.

contestado el 17 de mayo de 11 a las 00:05

Es CURDATE() no CUR_DATE () - Jason McCreary

Una consulta de ejemplo para más viejo que hoy (antes de la medianoche) sería:

SELECT * FROM my_table WHERE timestamp_column < CURDATE();

Primero echa un vistazo al sitio web de la Funciones de fecha / hora de MySQL para más detalles. Si tu quieres más antiguo que las últimas 24 horas, revisa fafnirbcrow's https://www.youtube.com/watch?v=xB-eutXNUMXJtA&feature=youtu.be

contestado el 17 de mayo de 11 a las 00:05

Es ambiguo, pero sospecho que "registros que son más antiguos que los de hoy" podrían significar algo así como "24 horas de antigüedad". - Frank Farmer

esto es más antiguo que ahora; hoy no. - cbrandolino

@cbrandolino, CURDATE() devuelve medianoche para la fecha actual. Cualquier marca de tiempo antes de eso sería más viejo que hoy. Sin embargo, me encantan los votos negativos. - Jason McCreary

No voté en contra y lo siento: leí el tiempo de la curtime. Sin embargo, aquí hay un voto a favor, ya que alguien puede haberlo votado en contra debido a mi comentario ^^ - cbrandolino

@cbrandolino, no te preocupes. No te estaba acusando. Solo piense que las personas que dan la vuelta a SO y votan en contra de las cosas sin leer deberían ser ... - Jason McCreary

Supongo que, por "mayor que hoy", te refieres a cualquier cosa insertada antes de anoche a la medianoche. Si se refiere a más de 24 horas, hágamelo saber (y edite su pregunta).

Esto es lo que haces:

  1. Obtener la marca de tiempo de ayer: $timestamp = strtotime('24.00 yesterday');
  2. Conviértalo en el formato de fecha y hora de mysql: $mysql_datetime = date('Y-m-d H:i:s', $timestamp);
  3. Haz la consulta: SELECT foo FROM bar WERE baz < $timestamp.

Respondido 14 Jul 18, 13:07

Una solución MySQL pura es mejor en el caso de que la base de datos esté en un servidor separado. - Jason McCreary

@jason quieres decir, ¿con diferentes configuraciones de tiempo? porque de lo contrario no veo ningún problema. - cbrandolino

Si. Es común que el tiempo para MySQL y PHP pueda ser diferente o incluso tener diferentes configuraciones de zona horaria. Especialmente cuando se encuentra en servidores separados. Si el usuario está almacenando la fecha en MySQL (como es evidente por el ON UPDATE) entonces deberían estar comparando en MySQL. - Jason McCreary

+1 Hacerlo con PHP permite que la consulta se almacene en caché, mientras que el uso de las funciones integradas de MySQL no lo hace. - John Conde

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.