ORACLE 中文与英文日间区别,插入时间会报错,显示'无效的月份'
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
oracle数据库使用toad 工具检查实例与数据库 参数,NLS_LANGUAGE 是 AMERICA 。
数据库会报告一个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之前修改成英文语言就可以了。
目录 返回
首页