#snowflake-cloud-data-platform #julian-date
#snowflake-cloud-data-platform #дата по юлианскому календарю
Вопрос:
Мои данные представлены в формате ниже (юлианский):
2020102
2019134
Тип данных в снежинке — это дата для этого поля. Как мне вставить это в снежинку, используя команду копирования.
Я думаю ниже, но я пока не смог найти формат даты для Julian. Скопируйте в таблицу*col1,col2) (выберите $1, TO_DATE($ 2, ‘format’) из @%Table
Ответ №1:
В настоящее время Snowflake не поддерживает формат даты по юлианскому календарю, но вы можете использовать выражение для преобразования его в дату. КОПИРОВАНИЕ пока не поддерживает все функции, но вы можете сделать это с помощью этапа ВСТАВКА ВЫБОР из. Вот простой пример:
COPY INTO @~/test
FROM
(SELECT $1 FROM
VALUES (2020102),(2019134))
;
CREATE OR REPLACE TABLE t1 (juldate int, caldate date);
INSERT INTO t1
SELECT $1,
(left($1, 4)||'-01-01')::date right($1, 3)::integer - 1
FROM @~/test;
SELECT *
FROM t1;
JULDATE CALDATE
2020102 2020-04-11
2019134 2019-05-14
Ответ №2:
В Snowflake нет встроенного преобразователя даты по юлианскому календарю, и я не думаю, что предоставленные вами значения на самом деле являются датами по юлианскому календарю, поскольку формат обычно не содержит 4-значный год, я не думаю. В любом случае, вам нужно будет выполнить некоторый синтаксический анализ и добавить дату. Что-то подобное может сработать, хотя я не уверен на 100%, какой ожидаемый результат должен подтвердить:
with x as (
SELECT '2020102' as julian
)
SELECT DATEADD(days,SUBSTRING(julian,5,3)::number-1,(SUBSTRING(julian,1,4)||'-01-01')::DATE)
FROM x;
Кажется, это работает, но опять же, не уверен на 100%.