如何在postgresql中为表的每一行递增增加每个时间戳?

问题描述 投票:1回答:1

假设我有这个表(为简单起见,只有2列)

id ; created
1  ; "2018-08-18 18:46:15.111897"
2  ; "2018-08-18 18:46:15.111897"
3  ; "2018-08-18 18:46:15.111897"
4  ; "2018-08-18 18:46:15.111897"
5  ; "2018-08-18 18:46:15.111897"
6  ; "2018-08-18 18:46:15.111897"
7  ; "2018-08-18 18:46:15.111897"
8  ; "2018-08-18 18:46:15.111897"
...

我想为每个时间戳“创建”添加+1秒(或分钟),这样我的表就会变成

id ; created
1  ; "2018-08-18 18:46:15.111897"
2  ; "2018-08-18 18:46:16.111897"
3  ; "2018-08-18 18:46:17.111897"
4  ; "2018-08-18 18:46:18.111897"
5  ; "2018-08-18 18:46:19.111897"
6  ; "2018-08-18 18:46:20.111897"
7  ; "2018-08-18 18:46:21.111897"
8  ; "2018-08-18 18:46:22.111897"
...

“创建”值或全部相同的原因是因为我刚刚将列添加到我的表中,现在我想确保我的条目将根据时间戳正确排序,我将在稍后添加新条目我的桌子。

sql postgresql sorting timestamp
1个回答
3
投票

如何使用id

update t
    set created  = created + (id - 1) * interval '1 second';

如果ids有空隙,你可以使用join

update t
    set created = created + (seqnum - 1) * interval '1 second'
    from (select t.*, row_number() over (order by id) as seqnum
          from t
         ) tt
    where tt.id = t.id;
© www.soinside.com 2019 - 2024. All rights reserved.