我该怎么办,我继续得到 ORA-01861:文字与格式字符串 ORA-06512 不匹配:在 "SYS.DBMS_SQL" 处,第 1721 行



我一直得到ORA-01861:文字不匹配格式字符串ORA-06512: at "SYS.DBMS_SQL",行1721

我该怎么办?

create table TASK (
TASK_ID number not null constraint task_pk primary key,
TASK_DESCRIP varchar2(50) not null,
TASK_STARTING_DATE date not null,
TASK_ENDING_DATE date not null,
NUMBER_OF_EMPLOYEE number not null
);
INSERT INTO TASK VALUES(1101,'Initial interview','2018-03-01','2018-03-06','3');

您只是缺少关键字DATE

插入语句中有'2018-03-01'。这是一个字符串字面值,但是要接收这个值的表列的数据类型是DATE。这意味着Oracle必须将字符串转换为日期。现在'2018-03-01'不是在你的国家/地区常用的日期格式,所以Oracle不知道如何安全地转换它(例如,如何决定哪一天,哪一个月)。

使用日期文字代替。为此,我们必须使用关键字DATE,后跟格式yyyy-mm-dd,这可能是您已经在使用的。因此:

INSERT INTO task
(task_id, task_descrip, task_starting_date, task_ending_date, number_of_employee)
VALUES(1101, 'Initial interview', DATE '2018-03-01', DATE '2018-03-06', 3);

您需要提供日期应该具有的日期格式。您可以使用TO_DATE。为例:

INSERT INTO TASK VALUES(1101,'Initial interview',
TO_DATE('2018-03-01','YYYY-DD-MM'),
TO_DATE('2018-03-06','YYYY-DD-MM'),3);

如果你的日期应该以其他方式格式化,只需写'YYYY-MM-DD'而不是'YYYY-DD-MM'。请查看此处:db<>fiddle

最新更新