![]() |
calcular fechas entre 2 rangos de fechas Hola a todos, quiero hacer una consulta sql pero no doy con la tecla. En una bd tengo dos campos de tipo fecha (fechadesde y fechahasta) para manejar periodos de reservas. Ejemplo: nombre | fechadesde | fechahasta habitacion1 |2008/05/13 | 2008/05/15 Para mi ejemplo necesitaria una consulta que me diga que las fechas 2008/05/13, 2008/05/14 y 2008/05/15 se encuentran ocupadas para la habitacion1 para asi no volver a alquilarla dentro de ese periodo de fechas pero como les dije antes no doy con la tecla. Preguntando de otra manera. Como hago para saber si un rango de Fechas fecha1, fecha2 esta dentro de otro rango de fechas fech1 y fech2 mediante SQL. Agradezco de antemano la ayuda de los expertos de este foro. |
Re: calcular fechas entre 2 rangos de fechas Se me ocurre a bote pronto que esta sintaxis te selecciona el rango SELECT fechadesde, fechahasta, habitacion from reserva where habitacion = 1 AND ('2008-05-01' <= fechadesde AND '2008-05-06' >= fechadesde) OR ('2008-05-01' >= fechadesde AND '2008-05-01' <= fechahasta) La idea es ver que si la fechadesde de la nueva reserva es inferior a la fechadesde de la reserva anterior, la fechahasta de la nueva reserva debe ser mayor o igual que la fechadesde de la reserva anterior para que haya coincidencia; y si la fechadesde de la nueva reserva es mayor o igual que la fechadesde de la reserva anterior esa fecha desde debe ser menor o igual que la fechahasta de la reserva anterior para que haya coincidencia. De todas formas, imagino que habrá mejores soluciones para esto. No obstante, encontrarla la encuentra. |
Re: calcular fechas entre 2 rangos de fechas Hola, la verdad tu ejemplo me funciono de maravillas. Muchas gracias por tu ayuda. JM |
Re: calcular fechas entre 2 rangos de fechas en realidad a la consulta le faltaba algo. Terminada quedaría asi: SELECT fechadesde, fechahasta, habitacion from reserva where habitacion = 1 AND ('2008-05-01' <= fechadesde AND '2008-05-06' >= fechadesde) OR habitacion = 1 and ('2008-05-01' >= fechadesde AND '2008-05-01' <= fechahasta) |
| La zona horaria es GMT -6. Ahora son las 20:55. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.