如何在Snowflake中将带Zulu时间的VARCHAR日期转换为Timestamp
解决Snowflake中带T/Z的VARCHAR日期转Timestamp问题
针对你遇到的2022-02-01T02:37:35.792000Z这类格式的VARCHAR转Timestamp报错问题,核心是要匹配正确的格式字符串,同时注意末尾的Z代表UTC时区,推荐两种处理方式:
方法1:使用带时区的时间戳函数(推荐,保留时区信息)
用TRY_TO_TIMESTAMP_TZ函数,格式字符串里需要把固定的T和Z用引号转义,FF6对应6位微秒:
SELECT TRY_TO_TIMESTAMP_TZ('2022-02-01T02:37:35.792000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF6"Z"') AS converted_timestamptz;
方法2:转成无时区的Timestamp
如果不需要时区信息,可以先去掉末尾的Z,再用TRY_TO_TIMESTAMP:
SELECT TRY_TO_TIMESTAMP(REPLACE('2022-02-01T02:37:35.792000Z', 'Z', ''), 'YYYY-MM-DD"T"HH24:MI:SS.FF6') AS converted_timestamp;
报错原因
之前用TRY_TO_TIMESTAMP报错,是因为格式字符串里的T和Z没有转义,Snowflake会把它们当成格式占位符解析,而非固定字符,导致匹配失败。
保留原格式输出
如果转换后需要再输出成原格式的字符串,可以结合TO_VARCHAR:
SELECT TO_VARCHAR( TRY_TO_TIMESTAMP_TZ('2022-02-01T02:37:35.792000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF6"Z"'), 'YYYY-MM-DD"T"HH24:MI:SS.FF6"Z"' ) AS formatted_date;
内容的提问来源于stack exchange,提问作者AlSub
相关产品推荐
相关产品推荐

