@Tibor128

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

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

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


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

SELECT * FROM tablename
  • Вопрос задан
  • 52 просмотра
Пригласить эксперта
Ответы на вопрос 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
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Home Credit Bank Москва
от 150 000 руб.
zClick.biz Москва
от 100 000 до 200 000 руб.
Рокетбанк Москва
от 130 000 до 200 000 руб.
25 июн. 2019, в 00:24
15000 руб./за проект
24 июн. 2019, в 23:27
8000 руб./за проект