Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Entre fechas..

Estas en el tema de Entre fechas.. en el foro de Bases de Datos General en Foros del Web. Hola.. mm pues resulta que tengo que verificar en una aplicación si puedo o no realizar una reserva de determinado material.. es decir si esta ...
  #1 (permalink)  
Antiguo 17/03/2005, 09:00
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 22 años, 1 mes
Puntos: 1
Entre fechas..

Hola..

mm pues resulta que tengo que verificar en una aplicación si puedo o no realizar una reserva de determinado material.. es decir si esta la reserva ya hecha de ese material, en las fechas que el usuario dice.. entonces debe salir el mensaje de que no puede.. la programación es en php y la base de datos mysql 4.0.18

hago esto:

Código PHP:
$fecha1 "2005-03-15";
//$fecha2 = "2005-03-22"
$cdmaterial // variable que tiene el código del material.
$RESULT=mysql_query("SELECT * FROM tabla1 tr, tabla 2trm
                            WHERE trm.cdmaterial = '$cdmaterial'
                            AND   tr.feinicio <=  '$fecha1'
                            AND   tr.fefin >=  '$fecha1'"
,$conectar); 
Ahora.. todo va bien si ingreso reservas entre el 15 y 22 del mes 03... porque si ya existe esa reserva de ese material en esa fecha.. me sale el mensaje de error..

El lio viene cuando mi fecha1 no esta en el rango.. si no que es menor, es decir no es el 15 del mes 03 por ejemplo si no el 12 ó 11 pues si me deja realizar la reserva... algo me falta! mm alguna validación o que se yo!... ideas??

Última edición por Salome; 17/03/2005 a las 11:46
  #2 (permalink)  
Antiguo 17/03/2005, 09:47
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 9 meses
Puntos: 17
para comparar fechas es mejor usar to_days que te cuenta los días desde el 1/1/1970
"SELECT * FROM tabla1 tr, tabla 2trm
WHERE trm.cdmaterial = '$cdmaterial'
AND to_days(tr.feinicio) <= to_days('$fecha1')
AND to_days(tr.fefin) >= to_days('$fecha1')"
  #3 (permalink)  
Antiguo 17/03/2005, 09:52
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 22 años, 1 mes
Puntos: 1
mmmm al ponerle to_days ya no valida es nada.. pues no respeta el rango de las fechas... incluso deja realizar reservas, queda como si no tuviera ninguna validación
  #4 (permalink)  
Antiguo 17/03/2005, 10:00
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 9 meses
Puntos: 17
xq tenés q poner formato YYYY-MM-DD, no me había dado cuenta
  #5 (permalink)  
Antiguo 17/03/2005, 10:03
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 22 años, 1 mes
Puntos: 1
si, pero es que asi estan mis fechas en mysql.. asi las guarda.. en ese formato...
  #6 (permalink)  
Antiguo 17/03/2005, 10:07
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 9 meses
Puntos: 17
usá DATE_FORMAT, quedaría...

"SELECT * FROM tabla1 tr, tabla 2trm
WHERE trm.cdmaterial = '$cdmaterial'
AND to_days(tr.feinicio) <= to_days(date_format($fecha1,'%Y-%m-%d'))
AND to_days(tr.fefin) >= to_days(date_format($fecha1,'%Y-%m-%d'))"
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 00:39.