Foros del Web » Programando para Internet » PHP »

Comparar dos fechas

Estas en el tema de Comparar dos fechas en el foro de PHP en Foros del Web. Puedo comparar dos fechas así: $c2="SELECT num_habitacion from reservas where (f_ini>'$f_ini' and f_fin>'$f_fin')"; //f_ini y f_fin son los campos de la tabla teniendo en cuenta ...
  #1 (permalink)  
Antiguo 21/03/2012, 06:36
 
Fecha de Ingreso: junio-2009
Mensajes: 30
Antigüedad: 14 años, 10 meses
Puntos: 0
Comparar dos fechas

Puedo comparar dos fechas así:
$c2="SELECT num_habitacion from reservas where (f_ini>'$f_ini' and f_fin>'$f_fin')";
//f_ini y f_fin son los campos de la tabla
teniendo en cuenta que hago la conversion de un campo texto donde tomo la fecha así:
$f_ini=$_POST['fecha1'];
$f_fin=$_POST['fecha2'];

fec1 = $_POST['fecha1'];
$dia = substr($fec1, 0, 2);
$mes = substr($fec1, 3, 2);
$anyo = substr($fec1, 6, 2);

$anio = "20$anyo";

$fecha_total_ini = "$anio-$mes-$dia";

$f_ini=$fecha_total_ini;

$fec2 = $_POST['fecha2'];
$dia = substr($fec2, 0, 2);
$mes = substr($fec2, 3, 2);
$anyo = substr($fec2, 6, 2);

$anio = "20$anyo";

$fecha_total_fin = "$anio-$mes-$dia";

$f_fin=$fecha_total_fin;

Creo que estoy haciendo algo mal, pero no se lo que es, pues no me sale ningun registro.
Saludos y gracias.
  #2 (permalink)  
Antiguo 15/05/2012, 07:18
Avatar de exitoso23487  
Fecha de Ingreso: enero-2009
Mensajes: 49
Antigüedad: 15 años, 3 meses
Puntos: 8
Respuesta: Comparar dos fechas

El problema lo tienes en la consulta, por eso no te regresa ningún registro. El error estaría en que por sentido común sería la fecha inicial mayor a f_ini y la fecha final menor a f_fin.
La consulta ideal sería la siguiente
Código PHP:
$c2="SELECT num_habitacion from reservas where (f_ini BETWEEN '$f_ini' AND '$f_fin' OR
f_fin BETWEEN '$f_ini' AND '$f_fin' OR
'$f_ini' BETWEEN f_ini AND f_fin OR
'$f_fin' BETWEEN f_ini AND f_fin))"

A continuación te explicaria los 4 casos del WHERE.
$f_ini='2012-03-04';
$f_fin='2012-03-10';

Caso1:
BD=f_ini='2012-03-05'
BD=f_fin='2012-06-05';

Caso2:
BD=f_ini='2012-03-05'
BD=f_fin='2012-06-05';

Caso 3:
BD=f_ini='2012-02-28';
BD=f_fin='2012-03-04';

Caso 4:
BD=f_ini='2012-03-04';
BD=f_fin='2012-03-20';

Espero te sirva.

Última edición por exitoso23487; 17/05/2012 a las 05:48

Etiquetas: mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:20.