2012-10-11 157 views
12

我想知道是否有一种方法在SQL(t-sql首选)来确定日期范围是否落在另一个日期范围之间。确定日期范围是否落在另一个日期范围之间 - sql

我举例的目的: daterange1 =我有一个定义的日期范围,日期是1/1/2012 - 2012/1/5 daterange2 =我有两个其他日期的工作,可以说1/3/2012年和2012/1/4

我想有这一个CASE语句中使用这样的事情

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

这可能在SQL?我真的很难在这一个,我知道如何确定一个单一的日期是否在一个范围之间,但如何在一个日期范围内完成呢?答案并不一定需要在CASE声明中,但它是首选。

回答

23

你怎么能得到daterange1 = 0,因为它是一个范围,即2个值?

重叠日期的正确测试

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

如果你的意思是daterange2必须daterange1内全部下跌,那么

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

谢谢你,我以为它必须是这样的东西,只是无法弄清楚 – wondergoat77

+0

第二个正是我所需要的,再次感谢 – wondergoat77

+0

非常感谢。感谢。 – amilaishere

-1

SELECT * 在t 地方(开始日期和closedate之间beginningdate 或在开始日期和结束日期之间结束日期 或(开始日期<开始日期和结束日期> =关闭));