将日期范围的上限增加一天的方法

时间:2014-07-17 16:30:01

标签: postgresql postgresql-9.3

我想增加日期范围列中所有条目的上限,并使用独占上限“#39;”。将上限改为包含的方法或者为上限添加一天的方法都可以。

首次尝试(将上限更改为包含)

ALTER TABLE time
ALTER COLUMN timespan
TYPE daterange[]
USING timespan::daterange[];


ERROR: cannot cast type daterange to daterange[]

第二次尝试(将上限添加1天)

UPDATE time
SET timespan = daterange(lower(timespan),upper((timespan) +
interval '1 day'::date));


ERROR: cannot cast type interval to date

1 个答案:

答案 0 :(得分:0)

第一次尝试中的

daterange[]是一个daterange数组。它不是包含两个边界的daterange。包含或不包含绑定不是range类型的一部分。这是其价值观的一部分。要更改上限:

update time
set timespan = daterange(lower(timespan)::date, upper(timespan)::date, '[]')

注意daterange构造函数'[]'

的最后一个参数

http://www.postgresql.org/docs/current/static/rangetypes.html#RANGETYPES-CONSTRUCT

要在上限添加1天,请按照@a_horse

的说明进行操作
update time
set timespan = daterange(
    lower(timespan)::date, (upper(timespan) + interval '1 day')::date
)