Oracle 报错 ORA-01843: not a valid month
在导入SQL文件是出现,表导入正确,但是数据没有成功导入。
1,先找问题所在:
复制一个insert的语句在Navicat进行测试,出现报错。
ORA-01843: not a valid month
2,确认问题:
在网上搜了一下,说是日期转换的问题。(我的数据中日期数据是中文格式的)
问题所在:
3,解决问题
修改nls_date_language参数为中文
-- 该命令只是当前会话有用
ALTER SESSION SET nls_date_language='SIMPLIFIED CHINESE';
上面的操作有个缺陷是支队当前会话有用。在新建查询里面插入一两条数据是可以使用的。
但是我是要运行sql文件的,这个方法好像就不能用了。
因此,就另寻其他方法了。
-
既然是时间中文转换的问题,那能不能再sql语句里面进行添加上SIMPLIFIED CHINESE直接转换。
-
然后我就找怎么在sql语句里面配置的方法。
Oracle不同系统之间时间转换(NLS_DATE_LANGUAGE )
--英文: SELECT TO_CHAR(sysdate, 'MM/DD/YYYY HH:MI AM', 'NLS_DATE_LANGUAGE = American') FROM DUAL --日文: SELECT TO_CHAR(sysdate, 'MM/DD/YYYY HH:MI AM', 'NLS_DATE_LANGUAGE = Japanese') FROM DUAL --中文:(特别注意NLS_DATE_LANGUAGE多两个单引号) SELECT TO_CHAR(sysdate, 'MM/DD/YYYY HH:MI AM', 'NLS_DATE_LANGUAGE = ''SIMPLIFIED CHINESE''') FROM DUAL
有了上面的方法就很好解决了。
于是就在sql文件里把所有的日期格式转换后添加上:
'NLS_DATE_LANGUAGE = ''SIMPLIFIED CHINESE'''
最后再运行sql文件,完美成功。
在网上搜索链接:https://www.cnblogs.com/chonghaojie/p/9994625.html

浙公网安备 33010602011771号