是否可以匹配重叠的数据范围(datatype:daterange)值?
E.g。包含日期范围列的两个表,一个日期范围列(table1.c1)具有包含1年期间的日期范围值,而另一个日期范围列(table2.c2)具有包含20年期间的日期范围值。
如何匹配table1中'c1'的日期范围与table2中'c2'的日期范围重叠的行?
我尝试过使用OVERLAPS函数但导致语法错误。
我正在使用PostgreSQL 9.3。
答案 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)