- Сначала найдите нижнюю и верхнюю границы пересечения
- Нижняя граница пересечения (
IL
) является самой высокой из min([a;b])
и min([c;d])
;
- Верхняя граница пересечения (
IU
) является самой низкой из max([a;b])
и max([c;d])
;
Затем посчитайте дни в диапазоне [IL;IU]
, предполагая, что это ноль, если IL>IU
IL=max( min(a,b) , min(c,d) )
IU=min( max(a,b) , max(c,d) )
DAYSCOUNT= min( 0, IU-IL+1)`
После замены получаем
min( 0, min(max(a,b), max(c,d)) - max(min(a,b), min(c,d)) + 1 )`
«+1» в подсчетах дней необходим или не зависит от того, что вы подразумеваете под "между" или "внутри", включая границы или нет. Есть три случая, очевидно.
+1
- в диапазоне (включая границы)
+0
- от начальной даты до конечной даты
-1
- между этими датами, но не включительно