You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redshift转换含毫秒字符串为timestampTZ时结果异常咨询

问题解析与解决方法

这不是Redshift的bug,是格式符使用错误导致的问题:

  • 第一个问题:执行select to_timestamp('2023-04-12 14:29:15.352000', 'yyyy-MM-dd HH24:MI:SS')时丢失毫秒,是因为格式字符串里没有包含小数秒的匹配规则,Redshift会自动忽略字符串里的.352000部分,属于预期行为。

  • 第二个问题:用SS.MS格式符得到错误结果,是因为Redshift中MS代表3位毫秒数,而你的字符串里是6位小数(.352000)。Redshift会把这串数字当成352000毫秒解析,352000毫秒等于5分52秒,加到原时间14:29:15上就变成了14:35:07,这才出现了时间错误。

正确的转换方式

针对6位微秒的字符串,应该用US(代表6位微秒)或者FF(匹配任意位数的小数秒)格式符:

方法1:使用US格式符

select to_timestamp('2023-04-12 14:29:15.352000', 'yyyy-MM-dd HH24:MI:SS.US');

执行后会得到正确结果:2023-04-12 14:29:15.352000 +00:00(时区显示取决于你的会话时区设置)

方法2:使用FF格式符

select to_timestamp('2023-04-12 14:29:15.352000', 'yyyy-MM-dd HH24:MI:SS.FF');

FF会自动匹配字符串中所有的小数秒位数,同样能得到正确的转换结果。

内容的提问来源于stack exchange,提问作者lollerskates

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 14:27:49