使用postgres为间隔添加天数

时间:2014-09-26 12:36:13

标签: postgresql

我想在postgres中添加一个列日期范围(称为句点)几天。

例如,如果daterange是

26-09-2014:28-09-2014

我想要添加2天,结果必须是另一个日期范围

28-9-2014:30-09-2014

我该怎么办? 我试试

select PERIOD, PERIOD + '2 day' from mytable

3 个答案:

答案 0 :(得分:1)

select daterange(lower(r) + 2, upper(r) + 2)
from (values
    (daterange(current_date, current_date + 2))
) s(r);
        daterange        
-------------------------
 [2014-09-28,2014-09-30)

答案 1 :(得分:1)

您需要将值添加到每个元素,然后创建一个新的日期范围:

select daterange(lower(period) + 2, upper(period) + 2)
from mytable;

请注意,您无法将interval(例如interval '2' day)添加到date值,因为它会返回timestamp,因此该值无法转换为{ {1}}

答案 2 :(得分:0)

试试这段代码:

CREATE TABLE t (period daterange);
INSERT INTO t VALUES ('[2014-09-26, 2014-09-28]'::daterange);
SELECT period,
       lower(period),
       upper(period),
       daterange(lower(period), (upper(period)+INTERVAL '2 days')::date, '[]')
  FROM t;

         period          |   lower    |   upper    |        daterange
-------------------------+------------+------------+-------------------------
 [2014-09-26,2014-09-29) | 2014-09-26 | 2014-09-29 | [2014-09-26,2014-10-02)

请注意,虽然我已将2014-09-28指定为边界上限值,但系统会报告无界2014-09-29