Как получить текущий TIMESTAMP в UTC от BigQuery? - PullRequest
0 голосов
/ 25 декабря 2018

Я хочу добавить к моему запросу TIMESTAMP столбец в UTC.

Я знаю, что BigQuery имеет функцию CURRENT_TIMESTAMP(), но там не сказано, как преобразовать ее в UTC.

В MYSQL Я бы сделал:

SELECT UTC_TIMESTAMP()

Что такое эквивалент в BigQuery (только для стандартного SQL)?

1 Ответ

0 голосов
/ 25 декабря 2018

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

Отметка времени представляет собой абсолютную точку во времени, не зависящую от часового пояса или соглашения, например, перехода на летнее время.

И, более конкретно,

Временная метка - это просто смещение от 1970-01-01 00:00:00 UTC, при условии, что это точно 60 секунд в минуту.Временные секунды не представлены как часть сохраненной временной метки.

При запросе CURRENT_TIMESTAMP() он также явно показывает, что он в UTC, имея нулевое смещение часового пояса.Так что это временная метка в UTC, основанная на этом.

Возможно, возникла проблема с его использованием, поскольку он ничего не сохраняет в UTC и не заботится о дополнительных секундах.Спецификация гласит:

Дополнительные секунды можно наблюдать только через функции, которые измеряют реальное время.В этих функциях можно пропустить или повторить метку времени, когда есть високосная секунда.

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

Также объясняется преобразование:

Если ваш ввод содержит значения, которые используют «: 60» в поле секунд для представления високосной секунды, эта секунда не сохраняется при преобразованиик значению метки времени.Вместо этого это значение интерпретируется как метка времени с «: 00» в поле секунд следующей минуты.

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