Апдейт поля с добавлением тайизоны к дате

В базе данных ранее поле содержало только дату, далее были внесены правки и теперь данное поле содержит так же и таймзону. У старых записей необходимо проапдейтить данное поле так, что бы дата осталась той же, что указано, но к ней добавилась таймзона, подскажите как это можно реализовать? или что можно почитать касаемо этого?


Ответы (1 шт):

Автор решения: Akina

Дата в это json была вида 2015-01-01T00:00:00.000, теперь складывает так: 2015-01-01T00:00:00.000+03, мне необходимо к старым записям добавить часовой пояс. – Лидия

UPDATE test
SET data = REGEXP_REPLACE(data::TEXT, '(\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d\.\d{3})', '\1+03', 'g')::JSONB
WHERE data::TEXT !~ '\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d\.\d{3}\+\d\d';

https://dbfiddle.uk/?rdbms=postgres_12&fiddle=de04b169fed3cd9a05eaf87724f88c84

WHERE не позволяет повторно добавить зону.

→ Ссылка