Oracle报错ORA-01843:notavalidmonth Oracle 报错 ORA-01843: not a valid month
在导⼊SQL⽂件是出现,表导⼊正确,但是数据没有成功导⼊。
1,先问题所在:
复制⼀个insert的语句在Navicat进⾏测试,出现报错。
ORA-01843: not a valid month
2,确认问题:
oracle 时间转换在⽹上搜了⼀下,说是⽇期转换的问题。(我的数据中⽇期数据是中⽂格式的)
问题所在:
客户端nls_date_language为AMERICAN
3,解决问题
修改nls_date_language参数为中⽂
-
- 该命令只是当前会话有⽤
ALTER SESSION SET nls_date_language='SIMPLIFIED CHINESE';
上⾯的操作有个缺陷是⽀队当前会话有⽤。在新建查询⾥⾯插⼊⼀两条数据是可以使⽤的。
但是我是要运⾏sql⽂件的,这个⽅法好像就不能⽤了。
因此,就另寻其他⽅法了。
1. 既然是时间中⽂转换的问题,那能不能再sql语句⾥⾯进⾏添加上SIMPLIFIED CHINESE直接转换。
2. 然后我就怎么在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⽂件,完美成功。
在⽹上搜索链接:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。