Kürzlich musste ich in einem Select ermitteln, welche Datensätze einen gegebenen Datumsbereich, entweder volständg oder teilweise, liegen.
Man muss hierbei alle 3 möglichen Fälle abfragen:
AND (
(datefrom>=@startdate AND datefrom<=@enddate) /* Begin is in Range */
OR
(dateto>=@startdate AND dateto<=@enddate) /* End is in Range */
OR
(datefrom<=@startdate AND dateto>=@enddate) /* Overlaps Range */
)