UPDATE: Nach einer guten Diskussion mit Ada sehe ich, wie seine Abfrage die optimale Lösung ist. Während meine Antwort unten funktioniert, ist es überflüssig. Ich werde diese Antwort hier der Geschichte wegen hinterlassen. +1 zu Adas Antwort.
Wie ich die Frage verstehe, will er alle Aufgaben abrufen, an denen zu irgendeinem Zeitpunkt zwischen den angegebenen Daten gearbeitet wurde. Dies beinhaltet teilweise überlappende Aufgaben sowie Aufgaben, die während des Zeitintervalls begonnen und beendet wurden.
zwei Zeitschlitze überlappen, wenn:
- Die Startzeit für Aufgabe 1 an beliebiger Stelle zwischen dem Start- und Endzeiten Aufgabe fällt 2 OR
- Die Endzeit für Aufgabe 1 fällt irgendwo zwischen Anfang und Ende Zeiten der Aufgabe 2 OR
- Start- und Endzeiten
ich habe diese Methode erfolgreich in einem Reservierungssystem verwendet, um eine Überlappung bei den Buchungen zu verhindern.
Bis jetzt in den Antworten habe ich keine Abfrage gesehen, die diese beiden Bedingungen überprüft. Hier ist mein Versuch:
WHERE ((StartDate >= @FromDate) AND (StartDate <= @EndDate))
OR ((EndDate >= @FromDate) AND (EndDate <= @EndDate))
OR ((StartDate <= @EndDate) AND (EndDate >= @StartDate))
Möchten Sie Aufgaben, die sich überschneiden oder vollständig innerhalb des angegebenen Zeitrahmens ausgeführt werden? (dh wenn eine Aufgabe vor Ihrem @FromDate beginnt, aber zwischen @FromDate und @EndDate endet, möchten Sie sie in das Ergebnis einbeziehen?) –
Haben Sie meine Antwort versucht? – Eric