如何在雪花中将长的口头日期时间转换为时间戳(YY-MM-DD HH:MM:SS)? [英] how to convert long verbal datetime to timestamp (YY-MM-DD HH:MM:SS) in snowflake?

查看:24
本文介绍了如何在雪花中将长的口头日期时间转换为时间戳(YY-MM-DD HH:MM:SS)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用的是雪花枣。 我有奇怪模式的日期(从数据库输出):

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

我需要将其解析为DATETIME-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_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

这篇关于如何在雪花中将长的口头日期时间转换为时间戳(YY-MM-DD HH:MM:SS)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆