CREATE TABLE EMP
       (EMPNO int NOT NULL,
        ENAME VARCHAR(10),
        JOB VARCHAR(9),
        MGR int,
        HIREDATE DATE,
        SAL int,
        COMM int,
        DEPTNO int);
表信息是这样的但是
INSERT INTO EMP VALUES
        (7499, 'ALLEN',  'SALESMAN',  7698,
        '1981-2-20', 1600,  300, 30);的时候会显示'1981-2-20'文字与格式字符串不相符。请问应该修改什么地方呢?

解决方案 »

  1.   

    把'1981-2-20' 换成  to_date('1981-02-20','yyyy-mm-dd')你表定义的是date类型  插入的时候 给的是字符型 所以报错
      

  2.   

    尽管varchar2可以隐式转换成date,但是得注意当前的NLS_LANG参数。
    所以在插入日期格式数据时,尽量都使用to_date函数
      

  3.   

    它不是可以发生隐式转化的吗?如果不修改.sql脚本的话,要怎么做呢?
      

  4.   

    我要运行的那个脚本都没有用to_date(),数据还很多。nls_lang应该如何设置呢?
      

  5.   

    select * from nls_database_parameters; --server
    select * from nls_instance_parameters;  --client这是在你安装oracle的时候就配置好的。
    你需要根据server的参数来插入数据
      

  6.   

    隐式转换的日期必须是MM-dd-yyyy的,月-日-年,这是英语国家的表示习惯,你提供的是年月日顺序,所以隐式转换不了,有两种选择,要么改格式,要么显示转换,如楼上们说的做