我有一个包含大约6000个条目的表,我想为每个条目添加一个带有时间戳的列。从起始值开始(可能是NOW()),更新应该将每个条目的第一个值增加一个小时。
'2014-12-04 01:00:00.000'
'2014-12-04 02:00:00.000'
'2014-12-04 03:00:00.000'
我正在考虑使用窗口函数来执行此操作。
该表具有唯一ID和几何索引(gid)。
答案 0 :(得分:4)
这样的事情:
update the_table
set ts_column = current_timestamp + interval '1' hour * x.rn
from (
select id, row_number() over (order by id) rn
from the_table
) x
where x.id = the_table.id;
current_timestamp
返回事务开始时的当前时间,因此该值在语句运行期间不会更改,因此间隔始终会添加到相同的基值。