Principales respuestas
disponibilidad rango de fechas

Pregunta
-
hola bueno en esta ocacion estoy tratando de realizar una consulta con rango de fechas
mi tabla habitacion:
Cod_Hab
,tipo_hab,Habitacion,Detalle,Precio,Foto
1 1 superior xxxx xx xxx
2 1 xxxxxx xxx x xx
reserva
Num_Reserva
Cod_Hab Fecha_Entrada Fecha_Salida
1 1 01/01/2011 10/01/2011
y bueno supuestamente el una consulta el usuario pondra dos fechas para saver la disponibilidad fecha_inicial fechafinal que mas abajo lo he puesto como 'dd/mm/yy ' y bueno segun esos rangos que el usuario consulte pues deberia salir solo las disponibles
mas o menos toy tratando de resolverlo asi pero nada pues he probado con el betwen pero encierra ciertas fechas pero no logra lo que yo requiero.
select * from HABITACION as h where Tipo_Hab =1 and not exists ( select * from RESERVA as C where C.Cod_Hab = h.Cod_Hab and ('28/01/2010' > =C.Fecha_Entrada and'28/01/2010' <= C.Fecha_Salida ) or ('31/01/2011' > =C.Fecha_Entrada and'31/01/2011' >= C.Fecha_Salida ))
bueno lo dejo ahi pues ... en este foro me han ayudado mucho con las fechas .. un saludo
Respuestas
-
Estimado.
Prueba siempre iniciando en tus SP o consultas la sentencia :
SET DATEFORMAT DMY
y asi no importa la collation del campo o la bd siempre sera ese formato de fecha y con confianza usa el between.
Recomendacion: Por tema de orden no se compara VALOR VS CAMPO siempre es CAMPO VS VALOR.
Para tu caso :
select * from HABITACION as h where Tipo_Hab =1 and not exists ( select * from RESERVA as C where C.Cod_Hab = h.Cod_Hab and (C.Fecha_Entrada >=GETDATE() and C.Fecha_Salida>getdate())
Espero te sirva , aqui estoy poniendo solo como consulta la fecha actual
saludos
Rolando Lau
- Propuesto como respuesta Rolando Lau jueves, 20 de enero de 2011 20:03
- Marcado como respuesta Eduardo PorteschellerModerator martes, 25 de enero de 2011 13:20
Todas las respuestas
-
Estimado.
Prueba siempre iniciando en tus SP o consultas la sentencia :
SET DATEFORMAT DMY
y asi no importa la collation del campo o la bd siempre sera ese formato de fecha y con confianza usa el between.
Recomendacion: Por tema de orden no se compara VALOR VS CAMPO siempre es CAMPO VS VALOR.
Para tu caso :
select * from HABITACION as h where Tipo_Hab =1 and not exists ( select * from RESERVA as C where C.Cod_Hab = h.Cod_Hab and (C.Fecha_Entrada >=GETDATE() and C.Fecha_Salida>getdate())
Espero te sirva , aqui estoy poniendo solo como consulta la fecha actual
saludos
Rolando Lau
- Propuesto como respuesta Rolando Lau jueves, 20 de enero de 2011 20:03
- Marcado como respuesta Eduardo PorteschellerModerator martes, 25 de enero de 2011 13:20
-
bueno supuestamente en esas tengo fechas en reserva de habitacion que no deberian salir y pues he podido concretar que no salgan algunas pero hay otras que si salen y eso es mi eerros creo no fui concreto con la pregunta .. te agradesco tu ayuda ... amio .... pero espera otra respuesta mas en estod dias pues
en mi tabla reserva
fecha_entrada /// fecha_salida //codigo de habitacion
01/01/2011 10/01/2011 1
en mi tabla habiaciones
supongamos aun sea el año 2010 y sea noviembre... entoces yo puedo reservas dias antes de esa fecha, dias despues de esa fecha. pero no puedo reservar que mi fecha_entrada sea
02/10/2010 05/12/2011 pues ahi me debe de salir q no esta disponible pues
o si quiero reservar pues para
05/01/2011 20/05/2011 pues ahi no me debe de salir q no esa disponible
hasta ahi compara el rango pues con el between pero pero tomo mi uno de mis fecha que quiero y pues la compara pero en la otra no me sale pues ..
ahora poniendo lo demas pues ><= etc pues .. fucnionapero si pongo una fecha con intervalo dentro de esas fecha pues me deja de funcionar pues .. ... aver amios una ayuda mas
osea lo que quiero es ni que la fecha inicial este dentro de esos intervalos ni que la fecha final tampoco ... y ni que las dos fechas estendentro de esas fechas .. o bien las dos tienes que estar afuera de esos interbalos o nada pues ... se antes o sea despues
por que pueda ser que tenga una habitacio que lo han reservado por ejemplo para el mes de julio hasta mediados de agosto .. pero yo entonce spodria hacer una reserva para antes de esa fecha como tambien podria hacer una reserva pero despues de su fecha de salida .. bueno espero me den una manito mas un saludo : la fecha es nvarchar