La forma más fácil de encontrar una superposición es así:
IF EXISTS (SELECT 1 FROM table WHERE @myValueLo <= ExistingRangeEnd AND @myValueHi >= ExistingRangeStart)
-- Overlaps
ELSE
-- Doesn't overlap
Se puede demostrar que esto funciona si compara la condición anterior con cada una de las barras en el siguiente diagrama:
Existing range: |-------------------|
Overlaps: |-------------| |------------|
|----------------------------------|
|-------------|
Not overlaps: |-----| |----|
en todos los casos de superposición, ambas pruebas son verdaderas:
- la fecha de inicio del intervalo existente siempre es anterior a la fecha de finalización de la nueva gama
- la fecha de finalización del intervalo existente es posterior a la fecha de inicio de la nueva gama
Aquellos que no se superponen fallan en una u otra de esta prueba.