15

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

就我的示例而言: daterange1 = 我有一个定义的日期范围,日期是 1/1/2012 - 1/5/2012 daterange2 = 我还有另外两个日期可以使用,比如说 1/3/2012 和 1/4 /2012

我试图让这个在 CASE 语句中用于这样的事情

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

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

4

2 回答 2

27

你怎么能得到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
于 2012-10-11T23:14:40.847 回答
-1

select * from t where(startdate 和 closedate 之间的开始日期 OR

于 2017-03-27T15:22:56.870 回答