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

Me estoy liando con fechas y reservas

Estas en el tema de Me estoy liando con fechas y reservas en el foro de Mysql en Foros del Web. Hola amigos! tengo una duda con fechas y mysql que quizás sea facil de resolver pero llevo varios dias sin dar con la solución. El ...
  #1 (permalink)  
Antiguo 14/04/2006, 03:58
 
Fecha de Ingreso: septiembre-2004
Mensajes: 203
Antigüedad: 19 años, 6 meses
Puntos: 0
Me estoy liando con fechas y reservas

Hola amigos! tengo una duda con fechas y mysql que quizás sea facil de resolver pero llevo varios dias sin dar con la solución. El tema es el siguiente, en la base de datos tengo una tabla llamada 'reservas' y que tiene varias columnas entre ellas una que se llama 'desde' y otra llamada 'hasta'. Estas, evidentemente, las uso para marcar el comienzo y el final de una reserva. Ahora el tema es que necesito poner una fecha en un buscador y que me diga si en esa fecha ya hay una reserva hecha, por ejemplo, le meto 2006-10-01 y en la base de datos tengo una reserva con 'desde' = 2006-09-28 y 'hasta' = 2006-10-03, por lo que me tendria que decir que ese dia ya está ocupado. Alguien tiene idea de cómo podría hacerlo ???
Con lo que estaba probando y no funciona es:

$dia = "2006-10-01";
$query = "SELECT * FROM reservas WHERE hab = $h AND (desde >= $dia AND hasta <= $dia)";

Muchisimas gracias de antemano a todos.
__________________
Impala

Última edición por impala; 14/04/2006 a las 04:56
  #2 (permalink)  
Antiguo 14/04/2006, 06:11
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 6 meses
Puntos: 56
Prueba con esto a ver si funciona:

Código:
$dia = "2006-10-01";
$query = "SELECT * FROM reservas WHERE hab = $h AND (desde >= STR_TO_DATE($dia,'%m/%d/%Y') AND hasta <= STR_TO_DATE($dia,'%m/%d/%Y'))";
no se si me equivoco pero creo que la segunda condición debería ser:
Código:
desde <= STR_TO_DATE($dia,'%m/%d/%Y') AND hasta >= STR_TO_DATE($dia,'%m/%d/%Y'))";
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #3 (permalink)  
Antiguo 14/04/2006, 08:21
 
Fecha de Ingreso: septiembre-2004
Mensajes: 203
Antigüedad: 19 años, 6 meses
Puntos: 0
HOla, antes que nada, gracias por responder. Te cuento que lo puse tal cual me lo dijiste y nada, no funca. De todas formas, qué es lo que hicimos? porque no lo entendí ... gracias nuevamente.
__________________
Impala
  #4 (permalink)  
Antiguo 14/04/2006, 12:04
Avatar de haron  
Fecha de Ingreso: febrero-2004
Ubicación: Cádiz (refinitivo)
Mensajes: 632
Antigüedad: 20 años, 2 meses
Puntos: 3
una cosa solamente... no deberia ser?

... desde <= $dia AND hasta >= $dia
__________________
Si ocurre algo importante, estamos afuera fumándonos unos cigarritos.
  #5 (permalink)  
Antiguo 14/04/2006, 13:54
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 6 meses
Puntos: 56
La función STR_TO_DATE convierte la cadena que le envíes a una fecha con el formato indicado como segundo parámetro, en este caso ha sido : mm/dd/aaaa; puede estar ocurriendo que el formato de tus datos tipo fecha (desde y ahora) sean del tipo mm-dd-yyyy entonces prueba cambiando el valor del parámetro de formato de la función a %m-%d-%Y.
Más información aquí:
http://dev.mysql.com/doc/refman/5.0/...functions.html
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #6 (permalink)  
Antiguo 15/04/2006, 13:48
 
Fecha de Ingreso: septiembre-2004
Mensajes: 203
Antigüedad: 19 años, 6 meses
Puntos: 0
Al final me funcionó con este query:

$query = "SELECT * FROM reservas WHERE hab = '$h' AND ('$dia' >= desde AND '$dia' <= hasta)";

Espero que le sirva a alguien.
Saludos !!
__________________
Impala
  #7 (permalink)  
Antiguo 16/04/2006, 01:22
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
Se me hace más natural con Between, algo como:

... AND ('$dia' BETWEEN desde AND hasta)";
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #8 (permalink)  
Antiguo 16/04/2006, 03:48
 
Fecha de Ingreso: septiembre-2004
Mensajes: 203
Antigüedad: 19 años, 6 meses
Puntos: 0
Si, de esa manera tambien funciona y hasta queda mas facil de leer el código, de hecho ya lo habia probado de esta manera tambien, pero el error era que, como un novato, me olvidaba de encerrar la variable $dia entre comillas simples como se puede apreciar en el ejemplo del post que abre este hilo.
Gracias !!!
__________________
Impala

Última edición por impala; 16/04/2006 a las 04:34
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 19:19.