DB2迁移Oracle时Timestamp格式匹配问题求助
解决DB2到Oracle的Timestamp格式匹配问题
我来帮你搞定这个Timestamp格式的问题!你需要的是和DB2一致的YYYY-MM-DDTHH24:MI:SS.FFFZ格式,核心是要在Oracle的TO_CHAR函数里做两个关键调整:
- 嵌入固定的
T和Z字符(用双引号包裹,避免被Oracle解析为格式符) - 精确控制毫秒位数为三位(对应DB2的显示精度)
正确的Oracle表达式
直接用下面的TO_CHAR格式就能生成你要的结果:
TO_CHAR(insertDTM, 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')
效果验证
针对你提供的原始数据:
- 输入:
2018-05-31 09:12:46.650000000
输出:2018-05-31T09:12:46.650Z - 输入:
2018-05-31 17:07:35.522939000
输出:2018-05-31T17:07:35.522Z(Oracle对FF3会截断多余的纳秒位数,如果你需要四舍五入到三位毫秒,可以先对timestamp做处理:CAST(insertDTM AS TIMESTAMP(3))再转字符串)
额外注意:时区问题
如果你的insertDTM存储的不是UTC时间,但最终需要带Z后缀(代表UTC标准时间),记得先转成UTC时间再格式化:
TO_CHAR(SYS_EXTRACT_UTC(insertDTM), 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')
这样生成的格式就和DB2的示例完全一致啦!
内容的提问来源于stack exchange,提问作者Biswajit
相关产品推荐
相关产品推荐

