Zeitraum mit Zeiraum vergleichen

Hi,

irgendwie hab ich glaub ich die letzten Tage SQL total verlernt.

Ich habe einen ausgewählten Zeitraum, bspw. Start: 07.12.2003, Ende: 07.12.2003. In der Datenbank stehen die gebuchten Termine des Mandanten, mit den Werten Von und Bis.

Ich hab also 2 Zeiträume und muß jetzt für jede Buchung in der Datenbank prüfen ob der eigebene Zeitraum sich mit einem in der Datenbank überschneidet.

Kann mir hier mal jemand mit einem SQL-String helfen??

Am liebsten wäre mir eine COUNT „Abfrage“ die mir > 0 zurückgibt wenn der Termin sich irgendwo überschneidet, oder eben 0, wenn kein Termin in der Datenbank steht welcher sich schneidet mit dem gegebenen Zeitraum.

Ciao Sascha

Was ist bei Dir eine Überschneidung?
Entweder das Startdatum oder das Enddatum (oder beide) liegen im angegebenen Zeitraum, richtig?
Nehmen wir das Beipiel Start 7.12, Ende 7.12. (scheint nicht sehr sinnvoll, ist aber korrekt - der Tag hat 24 Stunden).
Und nehmen wir mal an, wir haben Oracle (man sollte schon erwähnen, um welche DB es geht).

select count(*) from [tabelle]
where
([von] between to_date(‚07.12.2003 00:00:00‘,‚dd.mm.yyyy hh24:mi:ss‘) and to_date(‚08.12.2003 00:00:00‘,‚dd.mm.yyyy hh24:mi:ss‘))
or
([bis] between to_date(‚07.12.2003 00:00:00‘,‚dd.mm.yyyy hh24:mi:ss‘) and to_date(‚08.12.2003 00:00:00‘,‚dd.mm.yyyy hh24:mi:ss‘))

[tabelle], [von], [bis] entsprechend ersetzen.

Ich hab’s nicht ausprobiert, hoffe aber, es stimmt so.

Gruß Uwe

P.S.
Das war natürlich zu schnell geantwortet.
Falls Du wirklich nur beliebige Überschneidungen suchst, fehlt noch der Fall:

…or
([von] to_date(‚08.12.2003 00:00:00‘,‚dd.mm.yyyy hh24:mi:ss‘))

Sieht alles nicht sehr elegant aus. Vielleicht geht es einfacher.