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

插入'2021-08-31T16:30:01.850'时间戳时报ORA-01843无效月份错误

问题产生原因
  • Oracle执行插入操作时,会自动对字符串类型和Timestamp字段做隐式类型转换,转换规则默认使用当前会话的NLS_TIMESTAMP_FORMAT参数配置的时间格式
  • 你插入的时间字符串为ISO 8601标准格式(中间包含固定字符T),和Oracle默认的时间格式不匹配,解析日期时无法识别正确的月份位置,因此抛出ORA-01843: not a valid month报错
解决方案

推荐使用显式时间转换函数规避隐式转换的不可靠问题,修改插入SQL如下:

INSERT INTO tbl_Account_Master (Account_ID, Verified_Date) 
VALUES (1, TO_TIMESTAMP('2021-08-31T16:30:01.850', 'YYYY-MM-DD"T"HH24:MI:SS.FF3'))
  • 格式掩码中用双引号包裹T,标识其为固定匹配字符,FF3对应精度为3位的毫秒数,和表字段Timestamp(3)的精度完全匹配

可选临时解决方案(仅当前会话生效,不推荐生产环境使用):
执行插入前先修改当前会话的默认时间格式配置:

ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD"T"HH24:MI:SS.FF3';

修改后你原来的插入SQL可以直接执行,但该配置会随着会话断开失效,依赖会话配置容易引发其他时间转换异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:06:08