Для примера, который вы привели, он не должен возвращать результатов ... start_date = 2011-12-25, а не между 2011-12-29 и 2011-12-30, поэтому выражение здесь неверно.Я думаю, что вы хотите, чтобы увидеть, есть ли какое-либо совпадение между зарезервированным диапазоном и новым возможным диапазоном бронирования правильно?
Чтобы сделать это, вы захотите вместо этого проверить
start_date > '$date2' OR end_date < '$date1;
, предполагаячто $ date1 всегда перед $ date2.