【问题标题】:how to convert long verbal datetime to timestamp (YY-MM-DD HH:MM:SS) in snowflake?如何将长口头日期时间转换为雪花中的时间戳(YYYY-MM-DD HH:MM:SS)?
【发布时间】:2021-04-21 20:15:25
【问题描述】:

我正在使用雪花日期。 我有奇怪的日期(从数据库输出):

Wed Apr 21 2021 22:11:32 GMT+0300 (Israel Daylight Time)

我需要将其解析为日期时间-YY-MM-DD HH:MM:SS。 如果我试试这个:

SELECT TO_TIMESTAMP_NTZ('Wed Apr 21 2021 22:11:32 GMT+0300 (Israel Daylight Time)', 'YY:MM:DD 
HH:MM:SS')

我收到此错误:

SQL Error [100096] [22007]: Can't parse 'Wed Apr 21 2021 22:11:32 GMT+0300 (Israel Daylight Time)' as 
timestamp with format 'YY:MM:DD HH:MM:SS'

在我尝试的每个功能中等等! (TO_TIMESTAMP_NTZ、TO_TIMESTAMP_LTZ、TO_TIMESTAMP_TZ、TO_TIMESTAMP、TO_DATETIME、TO_DATE、TO_TIME)。 有什么想法吗?

【问题讨论】:

    标签: sql timestamp snowflake-cloud-data-platform date-conversion


    【解决方案1】:

    使用Timestamp Formats 的值,并修剪字符串,我们可以得到以下工作

    SELECT TO_TIMESTAMP_NTZ('Wed Apr 21 2021 22:11:32', 'DY MON DD YYYY HH:MM:SS');
    

    添加时区

    SELECT TO_TIMESTAMP_NTZ('Wed Apr 21 2021 22:11:32 GMT+0300', 'DY MON DD YYYY HH:MM:SS GMTTZHTZM');
    

    这可行,但会给出一个 NoTimeZone 值,当该值具有时区时,因此可能 NTZ 不是您想要的。

    但是 (Israel Daylight Time) 部分让我们陷入了循环,所以让我们用 REGEX_SUBSTR 摆脱它

    SELECT 'Wed Apr 21 2021 22:11:32 GMT+0300 (Israel Daylight Time)' as in_str
        ,REGEXP_SUBSTR( in_str , '(.*) \\(',1,1,'c',1) as regex_str 
        ,TO_TIMESTAMP_NTZ(regex_str, 'DY MON DD YYYY HH:MM:SS GMTTZHTZM') as time
        ;
    

    给予:

      IN_STR
      Wed Apr 21 2021 22:11:32 GMT+0300 (Israel Daylight Time)
    
      REGEX_STR
      Wed Apr 21 2021 22:11:32 GMT+0300 
    
      TIME
      2021-11-21 22:00:32.000
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-07
      • 1970-01-01
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      • 2011-10-05
      相关资源
      最近更新 更多