【问题标题】:How to insert Julian Date in Snowflake Date Datatype field如何在雪花日期数据类型字段中插入儒略日期
【发布时间】:2020-09-15 20:00:00
【问题描述】:
我的数据格式如下(Julian):
2020102
2019134
Snowflake 中的数据类型是该字段的日期。如何使用复制命令将其插入雪花中。
我在下面想,但我还找不到 Julian 的日期格式。
复制到 Table*col1,col2) (select $1,TO_DATE($2,'format') from @%Table
【问题讨论】:
标签:
snowflake-cloud-data-platform
julian-date
【解决方案1】:
Snowflake 目前不支持儒略日期格式,但您可以使用表达式将其转换为日期。 COPY 还不支持所有功能,但您可以使用舞台上的 INSERT+SELECT 来完成。这是一个简单的例子:
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% 确定。