【问题标题】: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% 确定。

      【讨论】:

        猜你喜欢
        • 2020-01-11
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        • 2021-06-14
        • 2022-08-16
        • 1970-01-01
        • 2014-01-14
        • 1970-01-01
        相关资源
        最近更新 更多