Snowflake中提取JSON时间戳并去除T和Z的方法咨询
解决Snowflake中ISO时间戳去除T和Z的问题
错误原因分析
你之前的CAST(summary:disconnectTimestamp::String AS disconnectTimestamp)报错,是因为CAST的第二个参数必须是Snowflake支持的标准数据类型(如TIMESTAMP、DATE等),而你用了自定义别名disconnectTimestamp作为类型,导致系统识别为不支持的数据类型。
可行解决方案
方案1:先转时间类型再格式化(推荐)
先将字符串转成Snowflake的TIMESTAMP类型,再用TO_CHAR指定输出格式,自动去除T和Z:
TO_CHAR(TO_TIMESTAMP(summary:disconnectTimestamp::String), 'YYYY-MM-DD HH24:MI:SS.FF3') AS "TIME"
TO_TIMESTAMP可直接解析2024-03-21T20:19:57.398Z这种ISO标准时间字符串YYYY-MM-DD HH24:MI:SS.FF3对应输出2024-03-21 20:19:57.398,如果不需要毫秒可以去掉.FF3
方案2:直接字符串替换
如果只需要字符串格式的结果,无需转成时间类型,可用两次REPLACE函数直接替换T和Z:
REPLACE(REPLACE(summary:disconnectTimestamp::String, 'T', ' '), 'Z', '') AS "TIME"
- 第一次将
T替换为空格,第二次去掉末尾的Z,直接得到2024-03-21 20:19:57.398
方案3:正则表达式替换
用REGEXP_REPLACE一次性处理替换逻辑:
REGEXP_REPLACE(REGEXP_REPLACE(summary:disconnectTimestamp::String, 'T', ' '), 'Z$', '') AS "TIME"
内容的提问来源于stack exchange,提问作者DodgerFH
相关产品推荐
相关产品推荐

