В настоящее время я имею дело с большим количеством возможных неопределенных интервалов дат, т. Е.
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))
Полагаю, это настолько распространенная вещь (касающаяся не только дат или временных интервалов), что многие люди имели с этим дело. Я ищу существующие реализации, предпочтительно просто функции, основанные на базовых операциях сравнения.