先看一下你日期的格式
select sysdate from dual
然后可以修改一下
INSERT INTO biao1 (id,firstname,lastname,dob,phone)
VALUES (1,'John','Brown',to_date('01-JAN-1999','dd-mm-yyyy'),'1001');

解决方案 »

  1.   

    插入日期的时候,可以直接用SYSDATE插入当前的日期,to_date的函数实现日期格式的转换,完整的是yyyy-mm-dd hh24:mi:ss,所以,可以楼上所说的那样去插入。
      

  2.   

    SQL> select * from temp;TN
    ----------
    01-1月 -90
    01-1月 -80
    01-1月 -80
    01-1月 -70
    01-1月 -03SQL> insert into temp values('02-1月 -04');已创建 1 行。SQL> select * from temp;TN
    ----------
    01-1月 -90
    01-1月 -80
    01-1月 -80
    01-1月 -70
    02-1月 -04
    01-1月 -03已选择6行。SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'
      2  ;会话已更改。SQL> insert into temp values('03-1月-04');
    insert into temp values('03-1月-04')
                            *
    ERROR 位于第 1 行:
    ORA-01861: 文字与格式字符串不匹配
    SQL> insert into temp values('2004-01-03 00:00:00');已创建 1 行。SQL> select * from temp;TN
    -------------------
    1990-01-01 00:00:00
    1980-01-01 00:00:00
    1980-01-01 00:00:00
    1970-01-01 00:00:00
    2004-01-02 00:00:00
    2004-01-03 00:00:00
    2003-01-01 00:00:00已选择7行。SQL> 
    可见,使用这种字符串插入的方式弊端很多,
    使用to_date()转换不会有这种问题