MySql: select ob ein Zeitraum in einem Zeitraum

Hallo,

ich suche eine Mysql Abfrage, die überprüft, ob ein Zeitraum in einem anderen Zeitraum liegt. Dieses soll auch Schnittmengen beinhalten.
Ein einfaches
event_start_datum>=suche_startdatum AND event_ende_datum

Hallo,

das ist wohl weniger ein SQL-Problem als ein logisches.
Also erstmal die Fallunterscheidungen machen:

  • der eine Zeitraum liegt vollständig im anderen (und umgekehrt, falls auch das interessiert ?)
  • Beginn liegt im durchsuchten Zeitraum
  • Ende liegt im durchsuchten Zeitraum

Also drei oder vier Fälle, die du mit OR verknüpfen kannst.
Gibt es ein Between in Mysql? Das würde die Sache vielleicht etwas vereinfachen.

HTH, muzel

ich suche eine Mysql Abfrage, die überprüft, ob ein Zeitraum
in einem anderen Zeitraum liegt. Dieses soll auch
Schnittmengen beinhalten.
Ein einfaches
event_start_datum>=suche_startdatum AND
event_ende_datum

Wenn ich es richtig verstanden habe suchst du die Bedingung ‚hat eine nicht leere Schnittmenge‘. Wenn dem so ist, geht das auch ohne Fallunterscheidung.

Wenn das eine Intervall gegeben ist durch start1 und ende1 und das andere Interval durch start2 und ende2 liefert dir dies

ende1 > start2
and ende2 > start1
and ende1 > start1 – kannst du dir sparen, wenn du weisst, dass es echte Intervalle sind
and ende2 > start2 – kannst du dir sparen, wenn du weisst, dass es echte Intervalle sind

das richtige Ergebnis.
Durch gezieltes ersetzen von > durch >= kannst du die hier offenen Intervallgrenzen in geschlossene umwandeln. (wenn zwei geschlossene Intervallgrenzen verglichen werden, brauchst du ein >= sonst immer ein &gt:wink:

Jens