记录日常工作关于系统运维,虚拟化云计算,数据库,网络安全等各方面问题。


  ORACLE 中文与英文日间区别,插入时间会报错,显示'无效的月份'

表结构信息如下:

CREATE TABLE STUDENT.COURSE

(

  COURSE_NO      NUMBER(8) CONSTRAINT CRSE_COURSE_NO_NNULL NOT NULL,

  DESCRIPTION    VARCHAR2(50 BYTE) CONSTRAINT CRSE_DESCRIPTION_NNULL NOT NULL,

  COST           NUMBER(9,2),

  PREREQUISITE   NUMBER(8),

  CREATED_BY     VARCHAR2(30 BYTE) CONSTRAINT CRSE_CREATED_BY_NNULL NOT NULL,

  CREATED_DATE   DATE CONSTRAINT CRSE_CREATED_DATE_NNULL NOT NULL,

  MODIFIED_BY    VARCHAR2(30 BYTE) CONSTRAINT CRSE_MODIFIED_BY_NNULL NOT NULL,

  MODIFIED_DATE  DATE CONSTRAINT CRSE_MODIFIED_DATE_NNULL NOT NULL

)


在toad for oracle工具中执行插入数据如下:

ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-RR HH24:MI:SS';

Insert into STUDENT.COURSE

   (COURSE_NO, DESCRIPTION, COST, PREREQUISITE, CREATED_BY, 

    CREATED_DATE, MODIFIED_BY, MODIFIED_DATE)

 Values

   (10, 'Technology Concepts', 1195, NULL, 'DSCHERER', 

    TO_DATE('03/29/2007 20:14:33', 'MM/DD/YYYY HH24:MI:SS'), 'ARISCHER', TO_DATE('04/05/2007 20:14:33', 'MM/DD/YYYY HH24:MI:SS'));



提示报错,无效的月份。

oracle数据库使用toad 工具检查会话参数,NLS_LANGUAGE 是 SIMPLIFIED CHINESE


image.png


oracle数据库使用toad 工具检查实例与数据库 参数,NLS_LANGUAGE 是 AMERICA 。


image.png


数据库会报告一个ORA-01843的错误,这是因为客户端是中文环境,格式mon就不能用英文的月份写法,必须用中文的“六月”
如果不想修改sql语句运行的话,就需要在执行该语句之前,使用alter session 命令将nls_date_language修改为american,如下:
alter session set nls_date_language='american'     --以英语显示日期.


alter session set nls_language=american;  

或是

alter session set nls_date_language='american'   

在执行SQL之前修改成英文语言就可以了。






转载请标明出处【ORACLE 中文与英文日间区别,插入时间会报错,显示'无效的月份'】。

《www.92cto.com》 虚拟化云计算,系统运维,安全技术服务.

网站已经关闭评论