Le moyen le plus simple de trouver un chevauchement est le suivant :
IF EXISTS (SELECT 1 FROM table WHERE @myValueLo <= ExistingRangeEnd AND @myValueHi >= ExistingRangeStart)
-- Overlaps
ELSE
-- Doesn't overlap
Cela peut s'avérer efficace si vous comparez la condition ci-dessus à chacune des barres du diagramme ci-dessous :
Existing range: |-------------------|
Overlaps: |-------------| |------------|
|----------------------------------|
|-------------|
Not overlaps: |-----| |----|
dans tous les cas de chevauchement, ces deux tests sont vrais :
- la date de début de la plage existante est toujours avant la date de fin de la nouvelle gamme
- la date de fin de la plage existante est postérieure à la date de début de la nouvelle gamme
Ceux qui ne se chevauchent pas échouent à l'un ou l'autre de ce test.