确定日期范围是否在另一个日期范围之内 - SQL

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语句中,但最好是。

2个回答

28

如何获取daterange1 = 0,因为它是一个区间,即两个值?

检测日期重叠的正确方法是:

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

谢谢,我以为应该是这样的,只是想不出来。 - wondergoat77
非常感谢。非常感激。 - amilaishere

-1

选择 * 从 t 其中 ( beginningdate 在 startdate 和 closedate 之间 或者 endingdate 在 startdate 和 closedate 之间 或者 ( beginningdate < startdate 并且 endingdate >= closedate ) );


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接