Оказывается, в SQL есть оператор OVERLAPS. И это прекрасно.
Правда, это всего лишь частично прекрасно. Ибо в Oracle эта возможность является недокументированной. Тем не менее, она есть.
SQL> select 1 from dual
SQL> where (sysdate - 1, sysdate + 1)
SQL> overlaps
SQL> (sysdate - 2, sysdate + 2);
1
----------
1
Зато в PostgreSQL оно существует вполне себе официально. И это ещё прекраснее.
# select ('-infinity', current_timestamp + interval '10 days')
overlaps
(current_timestamp - interval '1 days', current_timestamp + interval '1 days');
overlaps
----------
t
(1 row)
Кстати, PostgreSQL ещё знает, что такое бесконечность.