SQL> create table ab
  2  (a integer,
  3  b date
  4  );表已创建。SQL> insert into ab values
  2  (1,'12-OCT-2010');
(1,'12-OCT-2010')
   *
第 2 行出现错误:
ORA-01843: 无效的月份
--------------------------------------
我按照书上来写的,‘12-OCT-2010’:12表示日期,OCT表示月份,2010表示年份。

解决方案 »

  1.   

    既然是date类型,插入时类型对应好to_date('12-OCT-2010','dd-mon-yyyy')
    要直接插入字符串的话要对应好格式
    select * from nls_session_parameters where parameter='NLS_DATE_FORMAT'
      

  2.   

    如果nls_date_language是中文,还要加一个参数
    to_date('12-OCT-2010','DD-MON-YYYY','nls_date_language=American')
    或者用to_date('12-10月-2010','DD-MON-YYYY')
      

  3.   


    alter session set nls_date_language=American;
    SQL> create table ab
      2  (a int,
      3  b date
      4  ) 
      5  tablespace myts
      6  /表已创建。
    SQL> insert into ab values(1,to_date('12-OCT-2010','dd-month-yyyy'))已创建 1 行。SQL> select * from ab;         A B
    ---------- ------------
             1 12-OCT-10
      

  4.   

    Oracle默认可以识别的日期格式是:'12-2月-05' 月份是个位数时不能写成02你也可以用to_date('2005-02-12 15:30:30','yyyy-MM-dd hh24:mi:ss')来给定日期,
    只要对应得当怎么写都没问题,例如to_date('12/02/2005 15:30:30',dd/MM/yyyy hh24:mi:ss')
    这里二月不能写成 2,应当对应着来写
    4楼的写法正确
      

  5.   

    用to_date()或者alter session set nls_date_format='dd-mon-yyyy';
      

  6.   

    晕了还是不行啊
    --------------------------------------------------------
    SQL> create table ab
      2  (a integer,
      3  b date);表已创建。SQL> insert into ab values(1,to_date('12-OCT-2010','dd-month-yyyy'));
    insert into ab values(1,to_date('12-OCT-2010','dd-month-yyyy'))
                                    *
    第 1 行出现错误:
    ORA-01843: 无效的月份------------------------------------------------------------------
      

  7.   

    insert into ab values(1,to_date('12-10-2010','dd-mm-yyyy'));
    你这样肯定插得进去。
      

  8.   

    先看下nls_date_format 值是多少。或是直接修改
    ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';
    然后 insert into ab values (1, to_date('12-OCT-2010', 'YY-MON-YYYY'));
              
      

  9.   

    谢谢
    9楼的插入方法行了
    但10楼的修改后也不行
    ----------------------------------------------------------------------
    SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';会话已更改。SQL> insert into ab values (1, to_date('12-OCT-2010', 'YY-MON-YYYY'));
    insert into ab values (1, to_date('12-OCT-2010', 'YY-MON-YYYY'))
                            *
    第 1 行出现错误:
    ORA-00911: 无效字符
    ----------------------------------------------------------------------我学习的脚本全是'12-OCT-2010'格式的
    怎样修改才能直接用那种格式啊
    谢谢
      

  10.   

    问题解决
    原因是我这里是中文的环境,改为英文环境就行
    具体解决方法:http://student.csdn.net/space.php?uid=108420&do=blog&id=6531
    感谢各位的支持和帮助