Элегантное преобразование часовых поясов в BigQuery - PullRequest
0 голосов
/ 22 октября 2018

Я загрузил данные в BigQuery с восточными временными метками, которые хранятся как исходные временные метки из исходных данных:

placed_eastern
-------------------
2018-07-23 00:00:03

BigQuery по умолчанию предполагает, что стандартные временные метки должны храниться как UTC:

2018-07-23 00:00:03 UTC

Проблема: мне нужно исправить это предположение о часовом поясе.

В настоящее время у меня есть некрасивый хак для исправления этой ошибки, чтобы гарантировать, что отметки времени хранятся правильно.Это извлекает части даты и времени из отметки времени в виде строк, объединяет их, а затем воссоздает отметку времени.

select 
  placed_eastern,
  timestamp(
    concat(
      cast(extract(date from placed_eastern) as string), 
      ' ', 
      cast(extract(time from placed_eastern) as string)
    ),
    'US/Eastern'
  ) as actual_placed_utc

Вопрос. Существует ли элегантный документированный способ решения этой проблемы?

1 Ответ

0 голосов
/ 22 октября 2018

Вы можете преобразовать в DATETIME для обработки метки времени как логической даты / времени, а затем преобразовать обратно в TIMESTAMP, используя US/Eastern:

SELECT TIMESTAMP(DATETIME(placed_eastern), 'US/Eastern')) AS actual_placed_utc
FROM dataset.table
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...