INSERT INTO customers(customer_id,first_name,last_name,dob,phone)
VALUES (1,'John','Brown','01-JAN-65','800-555-1211')提示错误:
在行 1 上开始执行命令时出错:
INSERT INTO customers(customer_id,first_name,last_name,dob,phone)
VALUES (1,'John','Brown','01-JAN-65','800-555-1211')
错误报告:
SQL 错误: ORA-01843: 无效的月份
01843. 00000 -  "not a valid month"把月份“JAN”换成“01”还是一样的错误,求高手们解答,谢谢啦

解决方案 »

  1.   

    你的字段dob应该是date类型吧?
    那么你在插入数据的时候,应该先将字符串类型转换为date类型的
    如:to_date(01-JAN-65','DD-MON-YY')
      

  2.   


    INSERT INTO CUSTOMERS
      (CUSTOMER_ID, FIRST_NAME, LAST_NAME, DOB, PHONE)
    VALUES
      (1, 'John', 'Brown', TO_DATE('01-JAN-65', 'dd-mon-yy'), '800-555-1211')
      

  3.   


    在行 1 上开始执行命令时出错:
    INSERT INTO CUSTOMERS
      (CUSTOMER_ID, FIRST_NAME, LAST_NAME, DOB, PHONE)
    VALUES
      (1, 'John', 'Brown', TO_DATE('01-JAN-65', 'dd-mon-yy'), '800-555-1211')
    错误报告:
    SQL 错误: ORA-01843: 无效的月份
    01843. 00000 -  "not a valid month"
    *Cause:    
    *Action:
      

  4.   

    INSERT INTO CUSTOMERS
      (CUSTOMER_ID, FIRST_NAME, LAST_NAME, DOB, PHONE)
    VALUES
      (1, 'John', 'Brown', '1965-01-01','800-555-1211')
      

  5.   

    ALTER SESSION SET nls_language=american;
    --先跑个这条语句 
      

  6.   

    ALTER SESSION SET nls_language=american;
    --先跑个这条语句 
      

  7.   


    能用了,谢谢啦,能不能解释一下为什么要先运行这句代码呀?ALTER SESSION SET nls_language=american;
      

  8.   

    这个是将的你的会话日期格式调整为American,西方格式,像你的要插入的数据是一样格式的。
    这说到底还是安装Oracle客户端的设置问题。出入数据时候注意就好了。
    如果在一个新的会话内,‘11-11-2011’应该可以直接插入,可以隐式转换成日期格式。
    但建议还是插入日期时,都使用to_date()。
    这些都是小问题啦,找些资料看看,很容易理解的