Вычитание из диапазона дат другого диапазона
Как получить набор строк получаемых при пересечении одного диапазона дат другим?
Например диапазон:
01.01.2020 - 24.06.2020`
пересекается с:
01.05.2020 - 31.05.2020
Ожидаемый результат:
01.01.2020 - 30.04.2020 01.06.2020 - 24.04.2020
Ответы (1 шт):
Автор решения: 0xdb
→ Ссылка
Можно так (на db<>fiddle):
select
min (l.dt)||'-'||max (l.dt) lower,
min (u.dt)||'-'||max (u.dt) upper
from t1 l cross join t1 u
cross join (select min (dt) lb, max (dt) ub from t2)
where l.dt < lb
and u.dt > ub
Результат:
LOWER UPPER
--------------------- ---------------------
01.01.2020-30.04.2020 01.06.2020-24.06.2020