Estoy escribiendo un sistema de reserva de hotel. después de mucho estudio (incluyendo desbordamiento de pila) Escribí este SQL para averiguar habitaciones libres:Comprobación de conflictos de rango de fechas en MySQL
SELECT
*
FROM room
WHERE
room_id NOT IN (
SELECT room_id
FROM bookings
WHERE
checkin <= '$check_in'
AND checkout >= '$check_out'
)
pero el problema es que no está teniendo en cuenta el tiempo de comprobación es 12:00:00 y la salida es 11:59:00
también no está dando las consultas correctas, como dentro del rango de fechas, no funciona como si reservo de 15-18 una habitación individual cuyo número es 501. si nuevamente ejecuto una consulta 17-19, esta habitación parece libre pero en la realidad debería estar ocupada.
alguien puede sugerir un sql muy bueno y eficaz que obtendrá la fecha exacta para que no se produzca ningún choque sistema de reserva porque el sistema se implementará en realidad por lo que los errores causarán muchos problemas.
gracias de antemano
hola gracias por su respuesta. puede escribir un simulacro sql para que pueda seguir porque no soy muy bueno en la escritura de sql (mysql precisamente) gracias de nuevo –
¡eso es un buen truco! Esa consulta verifica ambos extremos del rango, pero ¿qué hay del medio? En otras palabras, supongamos que el cliente estaba tratando de reservar una habitación por 4 noches, ¿pero ya estaba reservado para una noche en el medio? El registro de la reserva sería superior al $ check_in solicitado y el registro de la reserva sería inferior al $ check_out solicitado, pero la habitación no está disponible ... ¿no? – Aerik
@ Aerik Eso es una buena sorpresa para ti mismo. Actualizaré mi respuesta en consecuencia. –