SQL: Zeitfenstervergleich

Vergleich von Zeitfenster A mit Zeitfenster B auf Überschneidung. Das ist z.B. wichtig bei Kalender-Anwendungen mit Terminen usw… Es gibt sechs Fälle dazu:

A            |--------|
B1 |----|                          OK
B2         |----|                  Überschneidung
B3                 |----|          Überschneidung
B4                         |----|  OK
B5              |--|               Überschneidung
B6      |------------------|       Überschneidung

A-Anfang wäre der 01.01.2008, Ende wäre der 05.05.2008
B-Anfang = DateStart und das Ende dann DateEnd

Bei dieser Definition, würde ein Vergleich so aussehen:

...
WHERE ((DateStart > '2008-01-01' AND DateStart > '2008-05-05')  OR
      (DateEnd   < '2008-01-01' AND DateEnd   < '2008-05-05')) OR
       DateStart IS NULL
...