2

是否可以匹配重叠的数据范围(数据类型:日期范围)值?

例如,两个包含 daterange 列的表,一个 daterange 列 (table1.c1) 具有包含 1 年周期的 daterange 值,而另一个 daterange 列 (table2.c2) 具有包含 20 年周期的 daterange 值。

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

我曾尝试使用 OVERLAPS 函数,但这会导致语法错误。

我正在使用 PostgreSQL 9.3。

4

1 回答 1

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 文档,还是阅读其他数据库产品的教程/文档?

我想你想要PostgreSQL 用户手册推荐的,&&运营商:

regress=> SELECT daterange(DATE '2014-04-01', DATE '2014-04-28') && daterange(DATE '2014-04-14', DATE '2018-01-01');
 ?column? 
----------
 t
(1 row)
于 2014-05-29T14:53:51.367 回答