Der einfachste Weg, eine Überlappung zu finden, ist wie folgt:
IF EXISTS (SELECT 1 FROM table WHERE @myValueLo <= ExistingRangeEnd AND @myValueHi >= ExistingRangeStart)
-- Overlaps
ELSE
-- Doesn't overlap
Das funktioniert, wenn Sie die obige Bedingung mit jedem der Balken im folgenden Diagramm vergleichen:
Existing range: |-------------------|
Overlaps: |-------------| |------------|
|----------------------------------|
|-------------|
Not overlaps: |-----| |----|
in allen Überschneidungsfällen sind diese beiden Tests wahr:
- das Startdatum des bestehenden Bereichs liegt immer vor dem Enddatum des neuen Sortiments
- das Enddatum des vorhandenen Bereichs liegt nach dem Startdatum des neuen Sortiments
Diejenigen, die sich nicht überschneiden, bestehen den einen oder anderen dieser Tests nicht.