如何将长口头日期时间转换为雪花中的时间戳(YY-MM-DD HH:MM:SS)?
how to convert long verbal datetime to timestamp (YY-MM-DD HH:MM:SS) in snowflake?
我用的是雪花枣。
我有奇怪模式的日期(从数据库输出):
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)。
有什么想法吗?
使用 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
我用的是雪花枣。 我有奇怪模式的日期(从数据库输出):
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)。 有什么想法吗?
使用 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