Snowflake无法识别格式为2022-01-02T12:30:30.471395746-06的时间戳
解决方案:识别带小时级时区偏移的时间戳
你的问题出在时间戳格式未包含时区偏移部分,目标时间戳2022-01-02T12:30:30.471395746-06末尾的-06是小时级时区偏移,而你之前设置的timestamp_input_format只定义到了微秒(FF9),缺少时区偏移的格式标识。
方法1:修改会话级时间戳格式
更新timestamp_input_format,在末尾添加TZH(表示时区小时偏移):
alter session set timestamp_input_format = 'YYYY-MM-DD"T"HH24:MI:SS.FF9TZH'; alter session set timestamp_output_format = 'YYYY-MM-DD"T"HH24:MI:SS.FF9TZH'; select s.$1, s.$2, to_timestamp_tz(s.$3), s.$4, s.$5 from @my_stage s limit 10;
方法2:在函数内直接指定格式(无需修改会话)
如果不想修改全局会话参数,可以在to_timestamp_tz函数中显式传入匹配的格式字符串,更灵活:
select s.$1, s.$2, to_timestamp_tz(s.$3, 'YYYY-MM-DD"T"HH24:MI:SS.FF9TZH'), s.$4, s.$5 from @my_stage s limit 10;
补充说明
TZH用于匹配±HH格式的时区偏移(如-06、+08);如果你的时间戳有时区分钟偏移(如-06:30),则需要用TZH:TZM。FF9已经正确匹配了9位小数的微秒部分,这部分无需调整。
内容的提问来源于stack exchange,提问作者MoneyBall
相关产品推荐
相关产品推荐

