首页 > 解决方案 > ORA-01843: 无效的月份和 ORA-00907: 缺少右括号

问题描述

create table programer(IDNO NUMBER, PROJECTID VARCHAR(5),LASTNAME VARCHAR(30),FIRSTNAME VARCHAR(30),HIRINGDATE DATE('MM-DD-YY') ,LANGUAGES VARCHAR(15),TASKNO INT,Privileges VARCHAR(25));
create table programer(IDNO NUMBER, PROJECTID VARCHAR(5),LASTNAME VARCHAR(30),FIRSTNAME VARCHAR(30),HIRINGDATE DATE('MM-DD-YY') ,LANGUAGES VARCHAR(15),TASKNO INT,Privileges VARCHAR(25))
Error report -
ORA-00907: missing right parenthesis
00907. 00000 -  "missing right parenthesis"
*Cause:    
INSERT INTO PROGRAMER VALUES(201,'NPR','GUPTA','SAURAV','01-01-95','VB',52,'SECRET');
INSERT INTO PROGRAMER VALUES(201,'NPR','GUPTA','SAURAV','01-05-95','VB',52,'SECRET')
Error report -
ORA-01843: not a valid month

标签: sqloracle

解决方案


ORA-00907: 缺少右括号

语法错误可能在这里:

HIRINGDATE DATE('MM-DD-YY')

这是什么意思?日期就是日期。它由一天、一个月和一年组成。那是'MM-DD-YY'为了什么?

做这个:

HIRINGDATE DATE

ORA-01843: 无效的月份

'01-05-95'是一个字符串。DBMS 尝试对此进行解释并将其转换为日期,这取决于您使用的区域设置可能会或可能不会起作用。要么明确地命名格式:to_date('01-05-95', 'mm-dd-yy'),要么更好地使用 ANSI 日期文字:

date '1995-01-05'

推荐阅读