Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > Mysql

Respuesta
 
Herramientas Desplegado
Antiguo 13-may-2008, 12:04   #1 (permalink)
Ragher está en el buen camino
 
Fecha de Ingreso: octubre-2004
Mensajes: 56
Enviar un mensaje por MSN a Ragher
calcular fechas ocupadas entre 2 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 no esta dentro de otro rango de fechas fech1 y fech2 mediante SQL.

Agradezco de antemano la ayuda de los expertos de este foro.
__________________
Pronexo.com Diseño web y Sistemas de gestión

Última edición por Ragher; 13-may-2008 a las 12:50.
Ragher está desconectado   Responder Citando
Antiguo 14-may-2008, 10:41   #2 (permalink)
quimfv tiene algunos puntos positivos de karma
 
Fecha de Ingreso: marzo-2008
Mensajes: 442
Re: calcular fechas ocupadas entre 2 fechas

No se si te servirá:

he hecho el planteaminto distinto con los mismos datos

THabitaciones
Habitacion
....

Contiene todas la habitaciones


TReservas
Habitacion
fechadesde
fechahasta
....

continen todas la reservas

Necesitaremos una consulta con una subconsulta para obtener las habitaciones libres en un periodo dado

Si tenemos

$fechainicial
$fechafinal

variables con las fechas inicial y final que se pretenden reservar (periodo buscado).


Subconsulta para obtener la habitacion de las reservas involucradas en el periodo buscado:



Código:
SELECT DISTINCT TReservas.habitacion, 
             FROM TReservas
WHERE (TReservas.fechadesde<=$fechainicial 
             AND TReservas.fechahasta>$fechainicial) <--r. $fechainicial ocupada
     OR (TReservas.fechadesde<=$fechafinal 
            AND TReservas.fechahasta>$fechafinal) <--r. $fechafinal ocupada
     OR (TReservas.fechadesde>$fechainicial 
            AND TReservas.fechahasta)<$fechafinal);<--r. cuyas fechas estan dentro del periodo buscado
si la consulta anterior nos da las habitaciones que tienen algun dia ocupado del periodo buscado luego es facil obtener las que no tinen ningun dia ocupado es decir que estan libres en el periodo buscado:


Código:
SELECT THabitaciones.Habitacion
FROM THabitaciones
WHERE THabitaciones.Habitacion Not In 
      (SELECT DISTINCT TReservas.habitacion, 
      FROM TReservas
      WHERE (TReservas.fechadesde<=$fechainicial 
         AND TReservas.fechahasta>$fechainicial) <--r. $fechainicial ocupada
      OR (TReservas.fechadesde<=$fechafinal 
         AND TReservas.fechahasta>$fechafinal) <--r. $fechafinal ocupada
      OR (TReservas.fechadesde>$fechainicial 
            AND TReservas.fechahasta)<$fechafinal));<--r. cuyas fechas estan dentro del periodo buscado
Con programación habria muchas otras forma de hacerlo pero con sql puro solo se me ocurre esta, se que no es exàctamente lo que querias pero con esta informacion podrias hacer la reserva.

Quim
quimfv está desconectado   Responder Citando
Antiguo 14-may-2008, 12:35   #3 (permalink)
jurena tiene algunos puntos positivos de karma
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 817
Re: calcular fechas ocupadas entre 2 fechas

Quim,
yo me encontré esta pregunta en bases de datos y traté de orientarlo con una lógica que consideré adecuada. Os pongo el enlace:
calcular fechas entre 2 rangos de fechas
jurena está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 08:44.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93