English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
Alle Kategorien

Ich suche eine SQL Query die ermittelt ob ein angegebener Zeitraum (2 Timestamps) sich mit dem Zeitraum eines Datensatzes in einer Tabelle 'Termin' (2 Timestamp-Felder) überschneidet.
Die Query sollte möglichst performant sein :-)

P.S. Der Gewinner bekommt 10 Punkte ;-)

2006-12-03 09:18:25 · 3 antworten · gefragt von Anonymous in Computer & Internet Programmierung & Design

3 antworten

select * from termin where
( termin.timestamp1 < ts1 and ts1 < termin.timestamp2 )
or ( termin.timestamp1 < ts2 and ts2 < termin.timestamp2 )
or ( ts1 < termin.timestamp1 and termin.timestamp2 < ts2 )

Dabei gehe ich davon aus, dass bei den Timestamps der erste Wert jeweils die Untergrenze und der zweite Wert jeweils die Obergrenze enthält.
Eine Überschneidung hast du ja genau dann, wenn entweder eine der Datumsgrenzen innerhalb des Termin-Zeitraums liegt (das sind die ersten beiden Klammern) oder die Datumsgrenzen den Termin-Zeitraum ganz umschließen (das ist die dritte Klammer).
Wenn eine punktuelle Übereinstimmung schon als Überschneidung zählen soll, musst du ggf. die < durch <= ersetzen.

HTH/NBK

2006-12-03 10:09:37 · answer #1 · answered by NaturalBornKieler 7 · 0 1

date1 und date2 sind deine angaben

du hast ein tabelle heisst tabelle und 2 row heisst date und entry
syntax kann ich dir nicht ganz versprechen aber es muss ungefähr so aussehen... wenn nicht funkt dann nochmal melden

"select entry from `tabelle` where date1date"

2006-12-03 17:22:00 · answer #2 · answered by hedogan 3 · 0 1

SELECT * FROM tabelle WHERE termin1 = $termin1 AND termin2 = $termin2

2006-12-03 17:21:27 · answer #3 · answered by Mark M 2 · 0 2

fedest.com, questions and answers