Можете ли вы использовать столбец для параметра часового пояса AT TIME ZONE в Presto / Athena? - PullRequest
0 голосов
/ 21 сентября 2018

Вот операция, которую вы можете выполнить в Афине -

SELECT date_utc AT TIME ZONE 'America/Chicago'
FROM
(
  SELECT TIMESTAMP '2018-09-09 12:00:00' as date_utc

) x;

В других движках sql вы можете изменить America/Chicago на столбец -

SELECT date_utc AT TIME ZONE x.timezone
FROM
(
  SELECT
    TIMESTAMP '2018-09-09 12:00:00' as date_utc,
    'America/Chicago' as timezone

) x;

В Афине вы получите:

строка 1:30: на входе 'часовой пояс x' нет жизнеспособной альтернативы

Возможно ли использовать x.timezone в Афине?Это похоже на ошибку.

Ответы [ 2 ]

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

Добавление некоторого дополнительного контекста к правильному ответу выше: AT_TIMEZONE функция не документирована в presto docs.Когда кто-то использует timestamp AT time zone tz, на самом деле вызывается функция AT_TIMEZONE.Похоже, что это внутренняя функция, которую некоторые люди уже использовали.Вот проблема, обсуждающая это: https://github.com/prestodb/presto/issues/5162

Синтаксис выглядит так: AT_TIMEZONE(date_field, tz_field_or_string)

0 голосов
/ 21 сентября 2018

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

SELECT at_timezone(date_utc,x.timezone)
FROM
(
  SELECT
    TIMESTAMP '2018-09-09 12:00:00' as date_utc,
    'America/Chicago' as timezone

) x;
...