insert into newhire values ('corey','MA',to_date('12-Dec-2001'),'50000');

解决方案 »

  1.   

    insert into newhire values ('corey','MA',to_date('2001-12-12'),'50000');
      

  2.   

    '12-Dec-01' 改成 to_date('2001-12-12','yyyy-mm-dd')详细请参看: http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=185465
      

  3.   

    insert into newhire values ('corey','MA',to_date('2001-12-12','yyyy-mm-dd'),'50000')
      

  4.   

    insert into newhire values ('corey','MA',to_date('2001-12-12','yyyy-mm-dd'),50000);
      

  5.   

    我星期五也碰到过这种情况。
    oracle好像默认的日期格式是:'12-12月-01',你可以敲这个命令来查看当前日期格式:select sysdate from dual;
    有两种解决方法:
    1、好像上面几层的兄弟说的那样用to_date函数:to_date('12-12-01','dd-mm-yy').格式是自己设定的。
    2、用date前缀使用SQL99字面标准(YYYY-MM-DD):DATE '2001-12-12'。
      

  6.   

    insert into newhire values ('corey','MA',to_date('2001-12-12','yyyy-mm-dd'),50000);
      

  7.   

    先谢了,我还没上机调试,回去试了后结贴我看的是 机械出版社的书,照着书上输入的,这书不会有错把????? 书名是ORACLE 9I 初学者**(忘了),  书上有ORACLE PRESS字样
      

  8.   

    '12-Dec-01' 有问题,
    SELECT TO_CHAR(SYSDATE,'YYYYMMDD') FROM DUAL 看下你数据库的日期格式
      

  9.   

    很明显是日期字段的数值类型不匹配,上面的高手们说的方法完全正确,对于to_date函数来说,本人在使用时省略了后面的 'yyyy-mm-dd',即只有to_date('2001-12-12')就行了,呵呵,这个也有人说过了。
      

  10.   

    关于oracle的日期格式,是个很讨厌的问题。
    你可以用alter sessen set nls_date_format = 'yyyy-mm-dd hh24:Mi:ss'修改为我们常用的格式。但是每次都要改。如何永久修改日期格式呢?有很多人提出各种解决办法,包括改注册表,但我试验后都不行。
    我在asktom.oracle.com找到了一个解决办法(查nls_date_format),就是大名鼎鼎的TOM KYTE.我觉得不错,放在这里与大家分享。
    原因是这样的:如果客户机的注册表里定义了nls_lang,则init.ora中所有的nls设置都将被忽略,也就是说你在init.ora中设置nls_date_format是没用的。
    解决办法:定义一个数据库触发器,在用户登录时执行
    create or replace trigger data_logon_trigger 
    after logon 
    ON DATABASE 
    begin 
        execute immediate 
            'alter session set nls_date_format = ''YYYY-MM-DD HH24:Mi:SS'' '; 
    end; 
    /
    定义了该触发器后,每次登录后,日期的格式都会自动被设置为''YYYY-MM-DD HH24:Mi:SS。
    但是Tom同时建议大家,永远不要偷懒试图让oracle完成字符到日期型的转换,还是老老实实的用to_date函数吧。
    Tom的网站很好,建议大家常去看看。
    不要问我谁是Tom,否则我会笑你孤陋寡闻噢:-)
      

  11.   

    我星期五也碰到过这种情况。
    oracle好像默认的日期格式是:'12-12月-01',你可以敲这个命令来查看当前日期格式:select sysdate from dual;
    有两种解决方法:
    1、好像上面几层的兄弟说的那样用to_date函数:to_date('12-12-01','dd-mm-yy').格式是自己设定的。
    2、用date前缀使用SQL99字面标准(YYYY-MM-DD):DATE '2001-12-12'。
      

  12.   

    没有错,你的日期格式有问题,要用to_date函数来转化