在PostgreSQL 9.3中匹配重叠的日期范围值

时间:2014-05-29 12:54:14

标签: postgresql range-types

是否可以匹配重叠的数据范围(datatype:daterange)值?

E.g。包含日期范围列的两个表,一个日期范围列(table1.c1)具有包含1年期间的日期范围值,而另一个日期范围列(table2.c2)具有包含20年期间的日期范围值。

如何匹配table1中'c1'的日期范围与table2中'c2'的日期范围重叠的行?

我尝试过使用OVERLAPS函数但导致语法错误。

我正在使用PostgreSQL 9.3。

1 个答案:

答案 0 :(得分:2)

PostgreSQL中没有OVERLAPS运算符。

regress=> SELECT daterange(DATE '2014-04-01', DATE '2014-04-28') OVERLAPS daterange(DATE '2014-04-14', DATE '2018-01-01');
ERROR:  syntax error at or near "OVERLAPS"
LINE 1: ...T daterange(DATE '2014-04-01', DATE '2014-04-28') OVERLAPS d...

我不知道你从哪里得到的。你真的使用PostgreSQL,还是一些第三方分叉?您正在阅读PostgreSQL文档,还是其他一些数据库产品的教程/文档?

我认为您需要what the PostgreSQL user manual recommends&&运营商:

regress=> SELECT daterange(DATE '2014-04-01', DATE '2014-04-28') && daterange(DATE '2014-04-14', DATE '2018-01-01');
 ?column? 
----------
 t
(1 row)