Tach!
ich habe einen Datumbereich (tt.mm.jjjj) bis (tt.mm.jjjj) und möchte diesen mit einem Bereich in mysql abgleichen, der in 2 Spalten vorliegt.
Mir ist hierbei als Ergebnis lediglich wichtig, ob der aktuelle Datumsbereich und der Datumsbereich einer Tabellenzeile eine Überschneidung hat.
Wie mache ich das am effektivsten?
Zum Beispiel nimmst du dir ein Blatt Papier oder eine Datei (sowas karriertes wie Excel vielleicht) und zeichnest alle möglichen Konstellationen ein
DBvon DBbis
von bis
von bis
von bis
von bis
von bis
von bis
von bis
und so weiter. DBvon und DBbis sind deine beiden Werte aus dem DBMS, 'von' und 'bis' die beiden Daten des Prüflings. In der ersten Zeile sind beide Daten vor dem DBvon-Datum, in der zweiten fällt das 'bis' mit dem DBvon zusammen, in der dritten liegt das 'bis' zwischen DBvon und DBbis. Soweit hoffe ich, sollte das klar sein. Nun formulierst du die Bedingungen und das gewünschte Ergebnis je Zeile: Wenn 'von' < DBvon und 'bis' < DBvon dann false. Wenn 'von' immer nur vor 'bis' sein kann, kannst du das abkürzen in: Wenn 'bis' < DBvon dann false. Wenn der zweite Fall dich auch nicht interessiert, dann kannst du die ersten beiden Bedingungen zusammenfassen zu: Wenn 'bis' <= DBvon dann false.
Wenn du all diese Regeln definiert hast, kannst du Vereinfachungen suchen und die einzelnen Regeln zu einer zusammenfassen. Anschließend solltest du dir ein Testszenario mit allen Fällen bauen und prüfen, ob deine Formel allen Erwartungen entspricht.
dedlfix.