CitarCitar
SELECT * FROM Reservaciones WHERE entrada NOT BETWEEN '2010-01-07' AND '2010-03-20'
Pero con esto, solo miraría si el día 7 de enero y 3 de marzo está reservado, pero... y si da la casualidad que alguien reserva del 6 de enero al 8 de enero y del 18 de marzo al 25 de marzo?
Las evaluaciones BETWEEN indican un rango total o sea, si tu dices:
NOT BETWEEN '2010-01-03' AND '2010-01-20'
Esta condicion dice, que te retornara todos los registros que NO esten dentro de la fecha desde '2010-01-03' hasta '2010-01-20' Se evalua completo.. desde .. hasta. Ahora si en su lugar quieres saber cuales SI estan reservadas dentro de la fecha desde el dia 03 de Enero al 20 de Enero (Esto incluye todas las habitaciones reservadas a partir del dia 03,04,05,06,07...etc hasta el dia 20 de Enero) utilizarias entonces:
SELECT * FROM table WHERE entrada BETWEEN '2010-01-03' AND '2010-01-20'
En vez de NOT BETWEEN usas BETWEEN.
Si al contrario tu unicamente quieres conocer que habitaciones estan reservadas el dia 03 y dia 07 de Enero solamente esos 2 dias no los dias que estan entre ellos dos, usarias:
SELECT * FROM tabla WHERE entrada IN('2010-01-03','2010-01-07')
Ahora si tu quieres saber que habitaciones estan reservadas desde el dia 03 de Enero al 15 de Enero y desde el dia 5 de Marzo al 25 de Marzo.
SELECT * FROM tabla WHERE entrada BETWEEN '2010-01-03' AND '2010-01-15' AND '2010-03-05' AND '2010-01-25'
Ahora si tu solamente quieres saber las fechas de Reservacion de un cliente en especifico, ahi tu table Reservaciones debera crecer jejejejeje agregandole el campo cliente con su respectivo ID.