如何使用不断增加的时间戳更新列

时间:2014-12-04 13:26:07

标签: postgresql timestamp increment

我有一个包含大约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)。

1 个答案:

答案 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返回事务开始时的当前时间,因此该值在语句运行期间不会更改,因此间隔始终会添加到相同的基值。