Navicat导入sql文件报ORA-01843: not a valid month(session生命周期)

首先查一下自己的oracle的字符集

 

select * from v$nls_parameters;

 

 

 

我按照一般的方法
 

 

alter session set nls_date_language='SIMPLIFIED CHINESE/american/Japanese/Korean';


我是在Navicat里面测试一下有没有用,发现完全没问题,很开心。

 

 

 

然后测试成功后直接运行sql文件,发现依旧报非法月份ORA-01843: not a valid month,最后想到了我们改变的是session,也就是会话级别,我在查询窗口改变了字符集,那么也就是说只有在查询窗口里这条命令才会生效。想通之后,我就在sql的文件头增加了改变字符集sql语句,就没有问题了。

 

 

后面有人说这种临时改变这种字符集的方法不适用于真正的项目,根据实际需求来吧。我搜了下,找了方法借鉴下,下面这个没有测过。

 

 

SELECT TO_CHAR(SYSDATE,'DY') FROM DUAL;  

SELECT TO_CHAR(SYSDATE,'DAY','NLS_DATE_LANGUAGE = ''SIMPLIFIED CHINESE''') from dual;  

SELECT TO_CHAR(SYSDATE,'DAY','NLS_DATE_LANGUAGE = American') from dual;  

SELECT TO_CHAR(SYSDATE,'DAY','NLS_DATE_LANGUAGE = Korean') from dual; 

 

 

或者用kettle做一下日期的转换,我想这种应该也可行吧。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值