我想在postgres中添加一个列日期范围(称为句点)几天。
例如,如果daterange是
26-09-2014:28-09-2014
我想要添加2天,结果必须是另一个日期范围
28-9-2014:30-09-2014
我该怎么办? 我试试
select PERIOD, PERIOD + '2 day' from mytable
答案 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
。