#sql #postgresql
Вопрос:
У меня есть столик
id timestamp
1 2021-02-07 04:14:00
2 2021-02-07 04:14:00
3 2021-02-07 04:14:00
Как я могу обновить отметку времени с помощью now() 1 сек?
Ожидаемый результат:
id timestamp
1 2021-08-17 04:14:00
2 2021-08-17 04:14:02
3 2021-08-17 04:14:03
Следующий запрос просто установите одинаковое время для всех записей:
UPDATE some_table
SET event_timestamp = now()
Комментарии:
1. Если предоставленный ответ решил вашу проблему, пожалуйста, примите его. Принятие ответа помогает более поздним спрашивающим, у которых возникает та же проблема. Далее он удаляет вопрос из очереди без ответа. Если этого недостаточно для решения вашей проблемы, пожалуйста, опубликуйте то, что осталось.
Ответ №1:
Вы можете использовать row_number()
.
update t
set timestamp = now() (seqnum - 1) * interval '1 second'
from (select t.*,
row_number() over (partition by timestamp order by id) as seqnum
from t
) tt
where tt.id = t.id ;
Если id
он действительно последовательный, вы можете использовать:
update t
set timestamp = now() (id - 1) * interval '1 second';