oracle字符类型时间转换 ORA-01843 无效的月份

--oracle中在转换 字符类型的时间数据有时会报错  ORA-01843: 无效的月份
如:

SQL> select to_date('07-SEP-2017','dd-mon-yy') from dual;
 
select to_date('07-SEP-2017','dd-mon-yy') from dual
 
ORA-01843: 无效的月份
 
SQL> 


这个问题是输入的字符和数据库默认的时间格式不匹配导致。
查询本地nls_data_language的值,是简体中文

SELECT value FROM v$parameter WHERE name = 'nls_date_language';


SIMPLIFIED CHINESE



故如果字符串格式如下可以转换成功:

SQL> select to_date('07-9月-2017','dd-mon-yy') from dual;
 
TO_DATE('07-9月-2017','DD-MON-
------------------------------
2017/9/7
 
SQL> 




--但是如果实际字符串就是07-SEP-2017这种英文格式的,则需要修改nls_data_language参数
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';

但是一般我们不想要修改系统参数,可以通过在查询层加上该参数解决。

SQL> select to_date('07-SEP-2017','dd-mon-yy', 'nls_date_language = AMERICAN') from dual
  2  ;
 
TO_DATE('07-SEP-2017','DD-MON-
------------------------------
2017/9/7
 
SQL> 



问题解决
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值