ORACLE 01843. 00000 - “不是一个有效的月份”
Posted
技术标签:
【中文标题】ORACLE 01843. 00000 - “不是一个有效的月份”【英文标题】:ORACLE 01843. 00000 - "not a valid month" 【发布时间】:2015-10-24 13:03:21 【问题描述】:CREATE TABLE EventRequest(
EVENTNO VARCHAR2(8) constraint EventNoNotNull Not Null,
DATEHELD DATE constraint DateHelNotNull Not Null,
DATEREQ DATE CONSTRAINT DateReqNotNull Not Null,
CUSTNO VARCHAR2(8),
FACNO VARCHAR2(8),
DATEAUTH DATE,
STATUS VARCHAR2(16) CONSTRAINT StatusNotNull Not Null,
ESTCOST VARCHAR2(30) CONSTRAINT EstCost Not Null,
ESTAUDIENCE VARCHAR2(8) CONSTRAINT EstAudienceZero CHECK (ESTAUDIENCE>0),
BUDNO VarCHar2(8),
CONSTRAINT PK_EventRequest primary Key (EventNo),
constraint fk_EventCustNo Foreign Key (CustNo) REFERENCES Customer (CustNo),
constraint fk_EventFacNo foreign key(FacNo) References Facility (FacNo),
CONSTRAINT checkinstatus CHECK (Status in ('Approved', 'Denied', 'Pending'))
);
这是我要插入的表格
Insert into EVENTREQUEST(EVENTNO, DATEHELD, DATEREQ,
CUSTNO, FACNO, DATEAUTH,
STATUS, ESTCOST, ESTAUDIENCE, BUDNO)
values ('E100', to_date('25-OCT-13','DD-MON-RR'), to_date('06-JUN-13','DD-MON-RR'),
'C100', 'F100', to_date('08-JUN-13','DD-MON-RR'),
'Approved', 5000, 80000, 'B1000');
我在 VirtualBox 上使用 Sql Developer 和 Oracle Developer Day。 我也用这个命令改变了我的会话,但什么也没发生
ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-RR HH24:MI:SS';
【问题讨论】:
我看到您尝试插入格式为 DD-MON-YY 的日期的方式,因为没有时间过去,您是否尝试过仅使用插入到 EVENTREQUEST (EVENTNO,DATEHELD,DATEREQ,CUSTNO ,FACNO,DATEAUTH,STATUS,ESTCOST,ESTAUDIENCE,BUDNO) 值 ('E100','25-OCT-13','06-JUN-13','C100','F100','08-JUN-13' ,'批准',5000,80000,'B1000');看看是否解决了问题 您可以使用显式文字,例如'DATE '2013-10-24
'。
谢谢@adesst,但它不起作用!我使用这个 Date_format 是因为其他表中需要时间。
@GordonLinoff 它可以工作,但我有一个 .txt 文件,我的所有插入语句都在其中,这意味着我必须更改每一个?
你能不能在你的查询中使用 cast.. 并尝试使用它而不是 to_date..
【参考方案1】:
通过以下命令解决:alter session set nls_language=AMERICAN;
【讨论】:
以上是关于ORACLE 01843. 00000 - “不是一个有效的月份”的主要内容,如果未能解决你的问题,请参考以下文章
ORA-01843 - 不是有效的月份 oracle SQL
cx_Oracle.DatabaseError: ORA-01843: 不是一个有效的月份