我有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之间的任何内容。这可能吗?
答案 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