创建表 
create table insertdate( 
todaydate date 
);成功 
插入数据 
insert into insertdate values(TO_DATE('08-DEC-2007','DD-MON-YYYY')); 
提示:ORA-01843:无效的月份 
换成如下语句 
insert into insertdate values(TO_DATE('08-8月-2007','DD-MON-YYYY')); 
可是执行成功。 
分析:'8'占一个字符,'月'占两个字符,所以正好与指定的'MON'三个字符相符。 
但是为什么用'DEC'三个字符就不行呢? 

解决方案 »

  1.   

    日期的这种格式是和NLS_LANGUAGE有关的所以一般建议对日期方面的用格式YYYY-MM-DD或者YYYYMMDD等这样就和那个参数无关了
      

  2.   

    原因是你用的10g 10g的格式是'08-8月-2007'  这样的格式  如果在9i 中这句话是可以执行的
    相反下面这句话在9i中执行不了
    insert into insertdate values(TO_DATE('08-8月-2007','DD-MON-YYYY'));
      

  3.   

    我用的就是9i,我觉得还是版本的问题,中英文版本的问题。可能中文版能够识别的简写形式就是“8月”而英文版能够识别的月份简写形式就是“DEC”之类的月份头三个字母。
      

  4.   


    -- 修改会话的默认日期格式
    ALTER SESSION SET nls_date_format = 'YYYY-MM-DD';
    -- 临时改变一下会话的默认语言, 以识别类似 '12-MAY-05' 的日期格式
    alter session set nls_date_language = 'AMERICAN';
    -- 改回简体中文语言:
    alter session set nls_date_language = 'SIMPLIFIED CHINESE';