oracle表中TIME_STAMP是date型,FLAG是number(1) default 1,
现在用这个sql:
INSERT INTO TBL_AIDP(TIME_STAMP, FLAG) VALUES(to_date('19NOV09 10:00', 'DDMONYY HH24:MI'), '');
总提示无效的月份,哪里不对呢?谢谢! 

解决方案 »

  1.   

    是不是中文的系统呢SQL> select to_char(hiredate,'yyyy-mon-dd') from emp;TO_CHAR(HIREDATE
    ----------------
    2009-10月-14
    1981-2月 -20
    1981-2月 -22
    1981-4月 -02
    1981-9月 -28
    1981-5月 -01
    1981-6月 -09
    1987-4月 -19
    1981-11月-17
    1981-9月 -08
    1987-5月 -23
    1981-12月-03
    1981-12月-03
    1982-1月 -23
      

  2.   

    这个好像和你的计算机的区域·语言的设置有关系。
    把它改成下面的试试看:INSERT INTO TBL_AIDP(TIME_STAMP, FLAG) VALUES(to_date('1910月09 10:00', 'DDMONYY HH24:MI'), '');
      

  3.   

    INSERT INTO TBL_AIDP(TIME_STAMP, FLAG) VALUES(to_date('19NOV09 10:00', 'DDMONYY HH24:MI'), ''); 
    --最后那个''是什么
      

  4.   

    SQL> create table t1(time_stamp date,flag number(1) default 1);Table created.
    SQL> INSERT INTO t1(TIME_STAMP, FLAG) VALUES(to_date('19NOV09 10:00', 'DDMONYY H
    H24:MI'), '');1 row created.我的执行正确呀
      

  5.   

    你的执行正确是因为你的语言也是英文吧,你的提示是英文的:1 row created当语言设为中文的时候,mon就是1月 ,2月这样了,不是英文缩写了
      

  6.   

    恩 你说的对
    我的NLS_LANG是UTF8 所以之前执行正确楼主改成2#那样就可以了
    D:\test>set nls_lang=SIMPLIFIED CHINESE_CHINA.ZHS16GBKD:\test>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on 星期六 11月 7 19:56:34 2009Copyright (c) 1982, 2005, Oracle.  All rights reserved.SQL> conn scott/tiger
    已连接。
    SQL> select sysdate from dual;SYSDATE
    --------------
    07-11月-09
    SQL> create table t5(time_stamp date,flag number(1) default 1);表已创建。
    SQL> INSERT INTO t5(TIME_STAMP, FLAG) VALUES(to_date('1910月09 10:00', 'DDMONYY
    HH24:MI'), '');已创建 1 行。
    SQL> select * from t5;TIME_STAMP           FLAG
    -------------- ----------
    19-10月-09