2012-10-11 108 views
12

Estoy tratando de averiguar si hay una forma en sql (t-sql preferido) para identificar si un rango de fechas se encuentra entre otro rango de fechas.determinar si el rango de fechas se encuentra entre otro rango de fechas - sql

a los efectos de mi ejemplo: daterange1 = Tengo un intervalo de tiempo definido, son fechas 01/01/2012 hasta 01/05/2012 daterange2 = tengo otras dos fechas para trabajar con, digamos 1/3/2012 y 1/4/2012

estoy tratando de tener esta opción para utilizar en una instrucción CASE para algo como esto

CASE 
    WHEN daterange1 = 0 then result1 
    WHEN daterange2 falls within daterange1 then result2 
    END as datestuff 

es esto posible en SQL? Estoy realmente perplejo con esto, sé cómo averiguar si una sola fecha se encuentra entre un rango, pero ¿cómo se puede hacer con un rango de fechas? la respuesta no necesariamente debe estar en una declaración CASE, pero es preferible.

Respuesta

23

¿Cómo se puede obtener daterange1 = 0, ya que es un rango, es decir, 2 valores?

La prueba adecuada para fechas superpuestas es

CASE WHEN @range1start <= @range2end 
     and @range2start <= @range1end THEN 1 ELSE 0 END 

Si se refiere a que daterange2 debe quedar totalmente dentro daterange1, entonces

CASE WHEN @range1start <= @range2start 
     and @range2end <= @range1end THEN 1 ELSE 0 END 
+0

gracias, pensé que tenía que ser algo así, simplemente no podía resolverlo – wondergoat77

+0

el segundo era exactamente lo que necesitaba, gracias de nuevo – wondergoat77

+0

Muchas gracias. Valora eso. – amilaishere

-1

seleccione * desde t donde (beginningdate entre startdate y closedate O fecha de finalización entre la fecha de inicio y la fecha de cierre O (fecha de inicio < fecha de inicio y fin>> fecha de finalización));