更新时间戳列,使时间戳序列沿已排序的数字列递增



我有一个表,列是单调递增的整数(id)。我需要更新列updated_at(时间戳)以创建一个不断增加的时间戳系列,所有这些都是过去的。具体的步长并不重要,只要时间戳单调增加即可。

create table temp1 (
id serial not null,
bar varchar(35),
updated_at timestamp
)
;
insert into temp1
(bar)
values
('val1'),
('val2'),
('val3')
;
select * from temp1;
id | bar  | updated_at 
----+------+------------
1 | val1 | NULL
2 | val2 | NULL
3 | val3 | NULL
(3 rows)

实现此目的的一个简单方法是使用日期/时间数学运算符。例如,这将生成一个开始日期=过去3个月的时间戳序列,并将每行的时间戳与开始日期相比增加id秒:

update temp1
set updated_at = (now() - interval '3 months' + interval '1 second' * id)
;
select * from temp1;
id | bar  |         updated_at         
----+------+----------------------------
1 | val1 | 2023-01-06 17:49:59.644966
2 | val2 | 2023-01-06 17:50:00.644966
3 | val3 | 2023-01-06 17:50:01.644966
(3 rows)

参见:

  • PostgreSQL: Documentation: 15:9 .9日期/时间函数和操作符
  • 获取PostgreSQL中的日期列表
  • 在PostgreSQL中生成两个日期之间的时间序列

相关内容

  • 没有找到相关文章

最新更新