Es un problema con el que cualquier persona que utilice PHP y MySQL se encuentra muy a menudo. Hasta que PHP no trate directamente esos datos y se sobrecarguen internamente los operadores de comparación para que todo sea directo, tendremos que valernos de métodos como el que os muestro para poder comparar dos fechas en formato MySQL con PHP (formato MySQL, es decir fecha en formato inglés con guiones y el orden invertido respecto al nuestro).
La siguiente función devuelve:
function comparar_fechas_mysql($a, $b) { $a_v=explode("-",$a); $anyo_a = $a_v[0]; $mes_a = $a_v[1]; $dia_a = $a_v[2]; $b_v=explode("-",$b); $anyo_b = $b_v[0]; $mes_b = $b_v[1]; $dia_b = $b_v[2]; if($anyo_a > $anyo_b) return 1; else { if($anyo_a < $anyo_b) return -1; else { if($mes_a > $mes_b) return 1; else { if($mes_a < $mes_b) return -1; else { if($dia_a > $dia_b) return 1; else { if($dia_a < $dia_b) return -1; else return 0; } } } } } }
Esperamos vuestras sugerencias, mejoras y rectificaciones de este y todos los tips de programación que vayamos incorporando.
https://www.youtube.com/embed/z-xGk9c_eOw Guionista y locutor: Manuel Ignacio López Quintero.Fecha de publicación: 31 de diciembre de 2024.
Ver comentarios
Y por qué no comparar enteros? UNIX_TIME, tanto php como mysql tienen funciones para darte este tiempo.
Saludos.
Toda sugerencia es buena. Tu proposición es mucho más decente a cuanto tiempo de cómputo se refiere (o al menos eso parece). Pero bueno, la que propongo tiene el valor didáctico de sacar día, mes y año, de la fecha, que también pueden ser de interés.
Hola, yo no se ni de php ni de mysql, pero en programacion en general, una manera sencilla de comparar fechas seria:
fecha_a= anyo_a*10000 + mes_a*100 + dia_a;
fecha_b= anyo_b*10000 + mes_b*100 + dia_b;
if(fecha_a > fecha_b)
return 1;
elseif(fecha_a = fecha_b)
return 0;
else
return -1
Es decir....si las fechas son a=16/12/2008 y el b=31/12/2008, tendriamos
fecha_a=20081216
fecha_b=20081231
y como 20081216 < 20081231, pues devolveria -1
@josean: Otra posibilidad a tener en cuenta. Muchas gracias.
Comparando las cadenas directamente también podríamos ordenar las fechas (tened en cuenta que en formato inglés la fecha se escribe año-mes-día), es decir, del más relevante al menos, como se ordenan los números y las cadenas.
Otra manera que hay ahora en PHP >= 5, la clase DateTime con sus otras clases DateFormat y algunas más, mirarlas, parecen muy interesantes.
Saludos.
yo necesito es comparar fecha inicio con fecha final de una BD donde la fecha la estraigo del mismo campo de la BD para decir que fecha inicio no sea mayor a fecha final, agradeceria todala ayuda posible por ustedes....
tengo una problematica similar pero soy nuevo en php y me gustaria que me dieran una mano
lo que tengo es una tabla en la BD llamada empleados dentro de esta tengo un campo fecha con informacion de la siguiente manera 21/may/2013 pero me piden que la fecha no sea asi si no con el siguiente formato 21052013 veo que la funcion que crearon ustedes es algo similar alguna ayuda de antemano gracias