[SQL] Проверить, лежит ли один диапазон дат в другом
Добрый день.
Помогите, пожалуйста, составить SQL-запрос.
Есть две даты.
Нужно проверить, что интервал между этими данными не попадает в интервал дат в таблице БД. А также, что интервал дат в таблице не попадает в интервал между данными датами.
Да, последний вариант хорош. Только там или NOT добавить, или условие инвертировать:
SELECT * FROM table t WHERE {$fromDate} <= t.date2 AND {$toDate} >= t.date1
Как, зная id и две даты из скрипта, проверить, пересекаются ли для него даты в таблице?
Что-то вроде:
SELECT * FROM `order` WHERE `room_id`=99 NOT IN (SELECT room_id FROM `order` AS `o` WHERE ('2010-12-02' BETWEEN o.check_in and o.check_out OR '2010-12-29' BETWEEN o.check_in and o.check_out) AND `room_id`=2)
В случае выше выводится, соответственно, room_id=1, поскольку вторая выборка выбирает все room_id, для которых пересекаются даты.