我有一个活动日历:
日历始终有起点和终点(例如2014年4月29日至2014年6月9日)
在此日期范围内显示事件:

AND DATE(event_from) >= DATE(?) //29.04.2014
AND DATE(event_to) <= DATE(?) //09.6.2014

但如果活动开始于2014年4月28日,结束于2014年6月10日,则希望在日历中显示
如果超出范围,但仍在范围内,我如何显示此事件
感谢克林:
一起
AND (daterange(DATE(event_from), DATE(event_to)) && daterange(DATE(?), DATE(?)) OR( DATE(event_from) >= DATE(?) AND DATE(event_to) <= DATE(?) ))

最佳答案

使用daterangeoverlap operator类型:

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)

关于php - PostgreSQL日期范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39786018/

10-15 18:17
查看更多