服务器上的 Oracle 10g 使用中文字符集,所以按照如下的日期格式插入时,会提示你 ORA-01843 的错误。
SQL> Insert into BOOKSHELF_CHECKOUT
values
('DORAH TALBOT','MY LEDGER','15-FEB-02','03-MAR-02');
ORA-01843: not a valid month
要解决这个问题,可以在修改当前会话的 NLS_DATE_LANGUAGE 和 NLS_DATE_FORMAT,方法如下
SQL>alter session set nls_date_language='AMERICAN';
Session altered
当然如果要自定义日期格式,可以使用以下命令自定义:
SQL> alter session set nls_date_format = 'DD-MON-YYYY';
Session altered
然后再次Insert into:
SQL> Insert into BOOKSHELF_CHECKOUT
values
('GERHARDT KENTGEN','MIDNIGHT MAGIC','05-FEB-02','10-FEB-02');
1 row inserted
没有报错,ok了。
NOTE:需要说明和注意的是,这两条命令是在当前会话下设置,只能在当前会话下生效,使用SHOW PARAMETER命令是看不到的,如果只是在当前需修改使用这两条命令就可以了,如果要全局修改就只能修改参数文件夹了.
转载自:http://bxffeng.blog.163.com/blog/static/9023844920104911855512/