#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)