@Tibor128

Как скорректировать время в результате select?

В таблице есть столбец с данными типа timestamp.
Время там хранится UTC
Необходимо его скорректировать до UTC+3 именно в результате запроса.
Я понимаю, что это легко сделать, перечислив в запросе имена столбцов, например так:

SELECT id, name, timestamp + interval '3 hour' as timestamp FROM tablename


Но если столбцов много то не красиво перечислять их все ради того, чтобы скорректировать один.
Как это сделать в запросе вида:

SELECT * FROM tablename
  • Вопрос задан
  • 164 просмотра
Пригласить эксперта
Ответы на вопрос 2
Melkij
@Melkij
PostgreSQL DBA
В таблице есть столбец с данными типа timestamp.
Время там хранится UTC

Мигрируете на timestamp with time zone
Затем проставляете желаемый set timezone to '...'; и получаете всю обработку для timestamp with time zone корректную в этом часовом поясе.

не красиво перечислять их все ради того, чтобы скорректировать один.

Красиво - это перечислить явно и только те поля, которые в результате вам нужны.
Если в этом дурацком засилье orm вы пишете запрос руками - значит вы явно должны знать, что именно и зачем вы хотите прочитать. Следовательно, select * показывает явный антипаттерн.
Ответ написан
orlov0562
@orlov0562
I'm cool!
Попробуй поменять часовой пояс перед SELECT * FROM запросом, примерно так
SET timezone='America/Los_Angeles';

Ну, и +interval не надо делать, для этого есть AT TIME ZONE
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы