另外2个日期列之间的2个日期列

时间:2017-04-12 17:20:33

标签: sql sql-server database sql-server-2008

我有4个日期列 - From_Date_A,To_Date_A,From_Date_B,To_Date_B。我想创建一个标志列来标记From_Date_A和To_Date_A之间的任何日期介于From_Date_B和To_Date_B之间的任何内容。这可能吗?

1 个答案:

答案 0 :(得分:1)

使用case表达式检查重叠的日期范围:

select *
  , case when To_Date_A > From_Date_B 
          and To_Date_B > From_Date_A 
        then 1 
        else 0 
        end as Flag
from t

这假设重叠不包括范围的初始日期。

如果应该,那么:

select *
  , case when To_Date_A >= From_Date_B 
          and To_Date_B >= From_Date_A 
        then 1 
        else 0 
        end as Flag
from t

In depth explanation of this overlap check by Charles Bretana