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

来源:互联网 发布:c语言程序源代码 编辑:程序博客网 时间:2024/05/01 10:31
--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> 



问题解决
原创粉丝点击