如何在Snowflake中将指定格式字符串转换为标准Timestamp?
解决Snowflake时间格式转换错误的方案
原格式2019-09-15T21:43:02.000+0000带有UTC时区偏移标识(+0000),Snowflake默认的::TIMESTAMP隐式转换无法识别这种格式,你可以通过以下两种方法解决:
方法一:指定格式字符串精准转换
使用TO_TIMESTAMP函数并匹配原格式的模板,直接生成目标时间戳:
SELECT TO_TIMESTAMP(CREATEDDATE, 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') AS CREATED_TIMESTAMP FROM TBL1;
格式模板对应说明:
YYYY-MM-DD:匹配日期部分"T":匹配固定分隔符THH24:MI:SS.FF3:匹配时分秒及三位毫秒TZHTZM:匹配时区偏移格式(如+0000)
方法二:先转带时区时间戳再转换类型
先将字符串转为带时区的时间戳类型(TIMESTAMP_TZ),再强制转换为普通时间戳:
SELECT CAST(TO_TIMESTAMP_TZ(CREATEDDATE) AS TIMESTAMP) AS CREATED_TIMESTAMP FROM TBL1;
由于原格式的+0000对应UTC时区,转换为普通时间戳后会直接保留UTC时间的数值,正好符合你期望的2019-09-15 21:43:02.000结果。
内容的提问来源于stack exchange,提问作者user3461502
相关产品推荐
相关产品推荐

