我有一个包含6000个条目的表,我想为每个条目添加一个带有时间戳的列。从开始值(could be NOW())开始,更新应该将每个条目的第一个值增加一小时。

'2014-12-04 01:00:00.000'
'2014-12-04 02:00:00.000'
'2014-12-04 03:00:00.000'

我在想一个窗口函数来做这个。
该表具有唯一的id和几何索引(gid)。

最佳答案

像这样的:

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

关于postgresql - 如何使用增加的时间戳来更新列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27295215/

10-11 01:34
查看更多