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

query entre fechas

Estas en el tema de query entre fechas en el foro de Mysql en Foros del Web. Estoy intentando realizar un sistema de reservas de habitaciones para un hotel. Estoy usando una base de datos mysql la query que estoy intentando hacer ...
  #1 (permalink)  
Antiguo 18/01/2012, 22:10
 
Fecha de Ingreso: diciembre-2011
Mensajes: 5
Antigüedad: 12 años, 4 meses
Puntos: 0
Sonrisa query entre fechas

Estoy intentando realizar un sistema de reservas de habitaciones
para un hotel.
Estoy usando una base de datos mysql

la query que estoy intentando hacer es la siguiente pero no me funciona

SELECT id_reserva, numero_habitacion, activa, fecha_inicio, fecha_fin
FROM reservas
WHERE fecha_inicio >= '2012-01-19'
OR fecha_fin <='2012-01-19'

también lo intentado de esta forma

SELECT id_reserva, numero_habitacion, activa, fecha_inicio, fecha_fin
FROM reservas
WHERE fecha_inicio >= '2012-01-19'
AND fecha_fin <='2012-01-19'

"existe un registro en la base de datos que contiene esta información, fecha_inicio = 2012-01-18 y fecha_fin = 2012-01-20"

necesito saber cuales son las habitaciones que se encuentran ocupadas, lo que no puedo hacer es que me funcione con la fecha_inicio y fecha_fin.

ayuda por favor, llevo días intentando hacerlo y no me funciona
  #2 (permalink)  
Antiguo 19/01/2012, 02:17
 
Fecha de Ingreso: agosto-2011
Mensajes: 59
Antigüedad: 12 años, 8 meses
Puntos: 8
Respuesta: query entre fechas

"existe un registro en la base de datos que contiene esta información, fecha_inicio = 2012-01-18 y fecha_fin = 2012-01-20"

La query funciona bien,... sólo que no hace lo que quieres. Lo que has puesto te sacará los registros que hay en la fecha 2012-01-19... no te puede sacar otros. No se si me explico en el where tienes una contradicción. Le indicas que tiene que ser mayor o igual al día 19 pero también le indicas que tiene que ser menor o igual al día 19, la única fecha que cumple que sea ambas condiciones es el propio día 19. Si quieres otras fechas tendrás que cambiar el where...

WHERE fecha_inicio >= '2012-01-19'
AND fecha_fin <='2012-01-19'
  #3 (permalink)  
Antiguo 19/01/2012, 02:18
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: query entre fechas

Comprueba los tipos de datos de las tablas en los campos de fecha que estás utilizando. Si son fecha hora puede ser que no funcionen. POstea las tablas con datos para probar las selects. Saludos,
__________________
Fere libenter homines, id quod volunt, credunt.
  #4 (permalink)  
Antiguo 19/01/2012, 02:22
 
Fecha de Ingreso: agosto-2011
Mensajes: 59
Antigüedad: 12 años, 8 meses
Puntos: 8
Respuesta: query entre fechas

olvida mi anterior comentario... esta mal me he confundido
  #5 (permalink)  
Antiguo 19/01/2012, 07:30
 
Fecha de Ingreso: diciembre-2011
Mensajes: 5
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: query entre fechas

los campos en la base de datos son de tipo "date" lo que no logro es obtener los resultados que necesito, ya que no se como consultar fechas desde el rango, entre estas dos fechas de que existen en la base de datos (fecha_inicio, fecha_fin)
  #6 (permalink)  
Antiguo 19/01/2012, 07:57
 
Fecha de Ingreso: agosto-2011
Mensajes: 59
Antigüedad: 12 años, 8 meses
Puntos: 8
Respuesta: query entre fechas

Antes me he confundido... pero tampoco tanto. Te explico:
esta es tu consulta y los datos de tu registro


WHERE fecha_inicio >= '2012-01-19'
AND fecha_fin <='2012-01-19'

"existe un registro en la base de datos que contiene esta información, fecha_inicio = 2012-01-18 y fecha_fin = 2012-01-20"


Mira si la fecha de inicio es 2012-01-18 no cumple la condición fecha_inicio >= '2012-01-19' porque es menor y '2012-01-18 es menor que 2012-01-19 no mayor ni igual'

y si la fecha de fin es 2012-01-20 esta fecha es mayor que 2012-01-19 luego tampoco cumple la condición fecha_fin <='2012-01-19'

da igual que pongas and o or porque tu registro no cumple ninguna.
  #7 (permalink)  
Antiguo 19/01/2012, 08:50
 
Fecha de Ingreso: diciembre-2011
Mensajes: 5
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: query entre fechas

estoy de acuerdo con lo que dices pero dentro de esas fechas(2012-01-18 y 2012-01-20) la habitación esta ocupada, por ende si consulto fechas entre este periodo me debería aparecer como ocupada y no logro esto, por eso me gustaría saber como puedo hacer esta query
  #8 (permalink)  
Antiguo 19/01/2012, 09:30
 
Fecha de Ingreso: agosto-2011
Mensajes: 59
Antigüedad: 12 años, 8 meses
Puntos: 8
Respuesta: query entre fechas

SELECT id_reserva, numero_habitacion, activa, fecha_inicio, fecha_fin
FROM reservas
WHERE fecha_inicio <= fecha
AND fecha_fin >= fecha

entre el 18-01-2012
y el 20-01-2012

si la fecha es 16 devolverá vacío
si la fecha es 18 devolverá el registro
si la fecha es 19 devolverá el registro
si la fecha es 20 devolverá el registro
si la fecha es 21 devolverá vacío
creo aunque lo he mirado deprisa... compruebalo.
  #9 (permalink)  
Antiguo 19/01/2012, 09:49
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: query entre fechas

¿Probaste así?:

Es decir:
Código MySQL:
Ver original
  1. SELECT id_reserva, numero_habitacion, activa, fecha_inicio, fecha_fin
  2. FROM reservas
  3. WHERE '2012-01-19' BETWEEN fecha_inicio AND fecha_fin;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 19/01/2012, 11:08
 
Fecha de Ingreso: diciembre-2011
Mensajes: 5
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: query entre fechas

nifdya muchas gracias por tus repuestas.

gnzsoloyo muchas gracias me funciono la query..

Saludos

Etiquetas: query, select, sql
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 22:19.