重複を見つける最も簡単な方法は次のとおりです:
IF EXISTS (SELECT 1 FROM table WHERE @myValueLo <= ExistingRangeEnd AND @myValueHi >= ExistingRangeStart)
-- Overlaps
ELSE
-- Doesn't overlap
上記の条件を下の図の各バーと比較すると、これが機能していることがわかります。
Existing range: |-------------------|
Overlaps: |-------------| |------------|
|----------------------------------|
|-------------|
Not overlaps: |-----| |----|
重複するすべてのケースで、これらのテストは両方とも当てはまります。
- 開始日 既存の範囲のは常に終了日より前です 新しい範囲の
- 終了日 既存の範囲の開始日以降 新しい範囲の
重複しないものは、このテストのいずれかに失敗します。