小编aod*_*odj的帖子

日期范围中数组的元素?

我有一个日期数组,我想知道数组中的任何元素是否出现在给定的日期范围内。

例如(伪代码 - 不起作用,为了可读性而包装):

SELECT ARRAY['2017-01-01'::DATE, '2017-02-03'::DATE] && 
    daterange('2017-01-01', '2017-01-31', '[]');
Run Code Online (Sandbox Code Playgroud)

这个例子试图展示(虽然它不起作用)是我的日期数组和日期范围之间的值之间是否存在重叠。

理想情况下,我可以用集合来做,并确定两者之间是否存在联合,但似乎不可能将 daterange 对象转换为任何东西。

我确实设法让这个工作,但我不知道如何随后减少行:

SELECT daterange('2017-01-01', '2017-01-31', '[]') @> 
    unnest(ARRAY ['2017-01-01' :: DATE, '2016-07-30' :: DATE]);
Run Code Online (Sandbox Code Playgroud)

这将返回多行:

?column?
----------
 t
 f
(2 rows)
Run Code Online (Sandbox Code Playgroud)

有没有人对此有任何指示?任何帮助表示赞赏。

postgresql array range-types

5
推荐指数
1
解决办法
3221
查看次数

标签 统计

array ×1

postgresql ×1

range-types ×1