我目前正在处理很多可能不确定的日期跨度,即。
StartDate EndDate
--------- ---------
01JAN1921 31DEC2009
10OCT1955 null
...
其中间隔的另一端可能未知或未定义。我一直在研究用于检测重叠的小功能,一个区间是否是另一个区间的子区间,计算两个区间之间的差距等。
例如检测重叠,问题是
S E S and E are the start and end of the interval
| | we're comparing to. Here both are known, but
s1------+---e1 | either could be null. The small s:s and e:s
| | s2....e2 define the intervals we're comparing to and
|s3--e3 | again we'd like to allow for open intervals.
| s4--+----e4
s5..e5| |
s6--+-------+--s7
| |
基于与检测重叠与明确定义的间隔相关的问题,您需要检查
Coalesce(S,Coalesce(e-1,0))<Coalesce(e,Coalesce(S+1,1))
AND Coalesce(E,Coalesce(s+1,0))>Coalesce(s,Coalesce(E-1,1))
我想这是一件很常见的事情(不仅涉及日期或时间间隔),很多人都在处理它。我正在寻找现有的实现,最好只是基于基本比较操作的函数。