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

向Oracle表插入日期触发ORA-01843无效月份错误的求助

解决ORA-01843: 无效月份错误

问题原因

你插入的日期字符串'4.21.1994'与Oracle当前会话的默认日期格式不匹配,数据库无法正确解析该日期值,因此触发了ORA-01843错误。

解决方案

以下几种方法都可以解决这个问题,根据实际场景选择:

  • 显式转换日期格式(推荐)
    使用TO_DATE()函数指定日期字符串的格式,让数据库准确解析:

    -- 若日期格式为 月.日.年
    INSERT INTO emp VALUES(100,'John',TO_DATE('4.21.1994', 'MM.DD.YYYY'), 50000,'Manager');
    -- 若日期格式为 日.月.年(比如4是月份、21是日期)
    INSERT INTO emp VALUES(100,'John',TO_DATE('4.21.1994', 'DD.MM.YYYY'), 50000,'Manager');
    
  • 临时修改会话日期格式
    如果需要批量插入同格式的日期,可以先调整当前会话的日期格式,再执行插入:

    ALTER SESSION SET NLS_DATE_FORMAT = 'MM.DD.YYYY';
    INSERT INTO emp VALUES(100,'John','4.21.1994', 50000,'Manager');
    

    注意:该设置仅对当前会话有效,关闭会话后会恢复默认值。

  • 使用ANSI标准日期字面量
    采用Oracle支持的ANSI标准日期写法,这种方式不受会话日期格式影响,兼容性更强:

    INSERT INTO emp VALUES(100,'John',DATE '1994-04-21', 50000,'Manager');
    

内容的提问来源于stack exchange,提问作者Gokul Sai Vegireddy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:52:42