Postgres select 基于区间数组的日期
Postgres select date on the basis of interval array
我需要一个自定义解决方案来解决一个问题,用户可以在其中选择多个不同的时间间隔来进行数据比较。
示例:
CURRENT_DATE - interval '1 day'
CURRENT_DATE - interval '4 day'
CURRENT_DATE - interval '7 day'
等等
所以我正在寻找一种解决方案,我可以在其中以
的间隔传递整数数组
select CURRENT_DATE - interval '1day' * any(ARRAY[1,4,7])
但这是不可能的,因为
op ANY/ALL (array) requires an operator to yield boolean
您可以使用 unnest()
将数组元素提取到每个元素一条记录中,然后 return CURRENT_DATE
减去这些元素中的每一个:
SELECT
CURRENT_DATE - array_element
FROM unnest(ARRAY[1,4,7]) as array_element
当然,您可以将 unnest()
放入 SELECT
列表中:
SELECT CURRENT_DATE - unnest(ARRAY[1,4,7])
编辑:
如果您需要除天数以外的其他日期范围,您可以使用间隔:
SELECT CURRENT_DATE - unnest(ARRAY[1,4,7]) * interval '1 week'
我需要一个自定义解决方案来解决一个问题,用户可以在其中选择多个不同的时间间隔来进行数据比较。
示例:
CURRENT_DATE - interval '1 day'
CURRENT_DATE - interval '4 day'
CURRENT_DATE - interval '7 day'
等等
所以我正在寻找一种解决方案,我可以在其中以
的间隔传递整数数组select CURRENT_DATE - interval '1day' * any(ARRAY[1,4,7])
但这是不可能的,因为
op ANY/ALL (array) requires an operator to yield boolean
您可以使用 unnest()
将数组元素提取到每个元素一条记录中,然后 return CURRENT_DATE
减去这些元素中的每一个:
SELECT
CURRENT_DATE - array_element
FROM unnest(ARRAY[1,4,7]) as array_element
当然,您可以将 unnest()
放入 SELECT
列表中:
SELECT CURRENT_DATE - unnest(ARRAY[1,4,7])
编辑:
如果您需要除天数以外的其他日期范围,您可以使用间隔:
SELECT CURRENT_DATE - unnest(ARRAY[1,4,7]) * interval '1 week'