Преобразует ли UTC метку времени в местное? - PullRequest
1 голос
/ 30 апреля 2019

Как я могу преобразовать поле метки времени, которое включает день и время, в местное время в Prestosql? Поля выглядят как

Region ID  |         Start Time utc       |       End Time utc
abc           2019-04-26 20:00:00.000   2019-04-26 23:00:00.000
cdx           2019-02-27 23:30:00.000   2019-02-28 01:00:00.000

У меня есть Region IDS, поэтому, если мне нужно или если это облегчает задачу, я могу ввести в запрос идентификаторы часового пояса, которые мне понадобятся для этой строки.

Я хочу просто вернуть местное время начала и окончания для этого часового пояса.

запрос

SELECT table1.*
FROM table1
WHERE table1.day = date '2019-04-03' AND
     NOT EXISTS (SELECT 1
                 FROM table2
                 WHERE table1.id = table2.id AND
                       table1.timestamp >= table2.start_time AND
                       table1.timestamp <= table2.end_time
                 )

Где таблица 2 - время начала и окончания, в которое я хочу преобразовать в местное время ...

где время utc указано в предложении «не существует» для времени начала и окончания, как бы я изменил его на местное время? не все ли времена будут одинаковыми тимзоном в америке? Существует поле идентификатора региона, которое я могу использовать для привязки идентификатора региона к часовому поясу. Могу ли я использовать это?

1 Ответ

0 голосов
/ 30 апреля 2019

Из документации presto

SELECT timestamp '2012-10-31 01:00 UTC' AT TIME ZONE 'America/Los_Angeles';

2012-10-30 18:00:00.000 America/Los_Angeles

Поскольку текущая временная метка уже есть в UTC, вы можете добавить местность для временной отметки и получить желаемые результаты.

Надеюсь, это поможет

...