Если вы используете диапазон дат, который еще не закончился (все еще продолжается), например. не установлен endDate = '0000-00-00', вы не можете использовать BETWEEN, потому что 0000-00-00 не является допустимой датой!
Я использовал это решение:
(Startdate BETWEEN '".$startdate2."' AND '".$enddate2."') //overlap: starts between start2/end2
OR (Startdate < '".$startdate2."'
AND (enddate = '0000-00-00' OR enddate >= '".$startdate2."')
) //overlap: starts before start2 and enddate not set 0000-00-00 (still on going) or if enddate is set but higher then startdate2
Если startdate2 выше, то enddate нет перекрытия!