向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
相关产品推荐
相关产品推荐

