我想增加日期范围列中所有条目的上限,并使用独占上限“#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
答案 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
)