Преобразование часового пояса в snowflake sql

#sql #snowflake-cloud-data-platform

#sql #snowflake-облачная платформа для обработки данных

Вопрос:

Я выполняю преобразование часового пояса из current_timestamp в «US / Eastern» в представлении snowflake. Мне удалось создать представление, но при предварительном просмотре данных я получаю временную метку «US / Eastern», ошибка не распознана.

Я конвертирую, как показано ниже:

((CONVERT_TIMEZONE(current_timestamp, 'US/Eastern') - INTERVAL '5 HOUR'))

Комментарии:

1. Snowflake поддерживает стандартный iana.org часовые пояса: Америка / Лос-Анджелес, Европа / Лондон, UTC и т. Д. / GMT и т. Д. Однако некоторые простые часовые пояса, такие как PDT, в настоящее время не поддерживаются

Ответ №1:

Таким образом, просмотр точек LukStorms в документе TIMEZONE doc и переход по ссылке на Википедию List_of_tz_database_time_zones US/Eastern совпадает с America/New_York , таким образом

 ((CONVERT_TIMEZONE(current_timestamp, 'America/New_York') - INTERVAL  '5 HOUR'))
 

Но версия с 2 параметрами имеет вид:

 CONVERT_TIMEZONE( <target_tz> , <source_timestamp> )
 

но вы делаете ( <source_timestamp>, <target_tz>)

Кроме - INTERVAL '5 HOUR' того, это выглядит так же, как «в UTC для текущего не летнего времени», казалось бы, безопаснее использовать полную версию CONVERT_TIMEZONE для выполнения UTC части. казалось бы, вы должны использовать форму из примеров:

 -- Convert a "wallclock" time in Warsaw to the matching "wallclock" time in UTC

select convert_timezone('Europe/Warsaw', 'UTC', '2019-01-01 00:00:00'::timestamp_ntz) as conv;
 

таким образом, используйте :

 convert_timezone('America/New_York', 'UTC', current_timestamp::timestamp_ntz)