如何使用递增的时间戳更新列

Ste*_*fan 2 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'
Run Code Online (Sandbox Code Playgroud)

我正在考虑一个窗口函数来做到这一点。

该表有一个唯一的id和一个几何索引(gid)。

小智 5

像这样的东西:

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;
Run Code Online (Sandbox Code Playgroud)

current_timestamp返回事务开始时的当前时间,因此该值在语句运行期间不会更改,因此间隔始终添加到相同的基值。