我正在查询日期范围 [start_date] - [end_date] 是否与一个月重叠。
到目前为止,我有:
select * from my table
where (start_date, end_date) overlaps ('2000-02-01', '2000-02-28')
Run Code Online (Sandbox Code Playgroud)
我需要它包含在月份之外开始但进入月份的日期范围,或者从月份开始并进入下个月:例如
'2000-01-31', '2000-02-01'
'2000-02-28', '2000-03-01'
但是,这些未包含在查询结果中。
如果我可以只放置月份的日期部分而不是重叠('2000-02-01','2000-02-28')也很棒
任何帮助表示赞赏
您可以使用daterange:
select *
from the_table
where daterange(start_date, end_date, '[]') && daterange(date '2000-02-01', date '2000-02-28', '[]')
Run Code Online (Sandbox Code Playgroud)
该参数'[]'创建一个“包含”范围。这也将在部分或几个月内正常工作(甚至可以有效地编制索引)