Postgresql日期范围

Fro*_*oxz 1 php postgresql

我有一个包含事件的日历:日历始终有一个起点和终点(例如29.04.2014至2014年6月9日)

事件从此日期范围显示:

AND DATE(event_from) >= DATE(?) //29.04.2014
AND DATE(event_to) <= DATE(?) //09.6.2014
Run Code Online (Sandbox Code Playgroud)

但如果事件开始于28.04并于2014年6月10日结束,则需要在日历中显示

如果超出范围,我该如何显示此事件,但仍保持在范围内

感谢klin:

全部一起

AND (daterange(DATE(event_from), DATE(event_to)) && daterange(DATE(?), DATE(?)) OR( DATE(event_from) >= DATE(?) AND DATE(event_to) <= DATE(?) ) )

kli*_*lin 5

使用类型daterange重叠运算符:

with ranges(event_from, event_to) as (
values 
    ('2016-04-01'::date, '2016-06-01'::date),
    ('2016-01-01', '2016-03-01'),
    ('2016-05-01', '2016-05-15')
)

select *
from ranges
where daterange(event_from, event_to) && daterange('2016-05-01', '2016-05-31');

 event_from |  event_to  
------------+------------
 2016-04-01 | 2016-06-01
 2016-05-01 | 2016-05-15
(2 rows)
Run Code Online (Sandbox Code Playgroud)