Конвертировать UTC на основе отдельного столбца часового пояса - Postgres - PullRequest
0 голосов
/ 11 мая 2018

У меня есть таблица, которая имеет:

  • Исходная колонка с датой
  • Исходная временная метка (30-минутный интервал, строка)
  • Столбец метки даты и времени UTC
  • Часовой пояс «отчет» (как часовой пояс должен отображаться в конце концов)

    date      interval     datetime_utc     time_zone
    

    2018-05-11 22:30 2018-05-10 03:30:00 Америка / Нью-Йорк

Существует ли эффективный способ преобразования столбца datetime_utc в часовой пояс, указанный в той же строке в запросе или представлении? Я смог сделать это с помощью Python, но я хотел бы знать, как сделать это непосредственно в моем запросе.

Кажется, это работает - я могу сослаться на имя столбца, и оно преобразует его точно на основе значения, найденного в этой строке.

 (interval_timestamp_utc :: TIMESTAMPTZ AT TIME ZONE time_zone) :: DATE AS "Reporting Date",

 to_char((interval_timestamp_utc :: TIMESTAMPTZ AT TIME ZONE time_zone), 'HH24:MI') AS "Reporting Interval",

1 Ответ

0 голосов
/ 11 мая 2018

Я думаю, что конструкция AT TIME ZONE должна быть тем, что вы ищете. В вашем случае SELECT TIMESTAMP WITH TIME ZONE datetime_utc AT TIME ZONE time_zone должен дать вам метку времени, отображаемую без смещения для этого конкретного часового пояса.

Подробнее см. https://www.postgresql.org/docs/9.6/static/functions-datetime.html#FUNCTIONS-DATETIME-ZONECONVERT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...