确定日期范围是否在另一个日期范围之间 - sql

时间:2012-10-11 23:11:01

标签: sql tsql datetime

我试图找出sql(首选t-sql)中是否有办法识别日期范围是否介于另一个日期范围之间。

出于我的例子的目的: daterange1 =我有一个定义的日期范围,日期是2012年1月1日 - 2012年1月5日 daterange2 =我有两个其他日期可以使用,比如说2012年1月3日和2012年1月4日

我试图在CASE语句中使用此类

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

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

2 个答案:

答案 0 :(得分:24)

如何获得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

答案 1 :(得分:-1)

选择* 从T where(startdate和closedate之间的开始 或者在startdate和closedate之间结束 或(开始日期&lt; startdate和endingdate&gt; = closedate));