首页 >数据库 >mysql教程 >为什么我的SQL INSERT语句会导致ORA-01861:文字与格式字符串不匹配?

为什么我的SQL INSERT语句会导致ORA-01861:文字与格式字符串不匹配?

Susan Sarandon
Susan Sarandon原创
2024-12-28 16:00:17368浏览

Why Does My SQL INSERT Statement Result in ORA-01861: Literal Does Not Match Format String?

ORA-01861: 文字与格式字符串不匹配

在 SQL 中,错误“ORA-01861: 文字与格式字符串不匹配”当向表中插入数据值时出现“,并且文字的格式与指定的格式字符串不匹配。当尝试插入特定格式的日期值时,经常会出现此错误。

考虑以下 INSERT 语句:

INSERT INTO Patient (PatientNo, PatientFirstName, PatientLastName, PatientStreetAddress, PatientTown, PatientCounty, PatientPostcode, DOB, Gender, PatientHomeTelephoneNumber, PatientMobileTelephoneNumber)
VALUES (121, 'Miles', 'Malone', '64 Zoo Lane', 'Clapham', 'United Kingdom', 'SW4 9LP', '1989-12-09', 'M', 02086950291, 07498635200);

在此语句中,DOB 列定义为日期。但是,文字“1989-12-09”不是 SQL 日期的可识别格式。要解决此问题,请使用 TO_DATE() 函数将字符串文字转换为正确的格式:

INSERT INTO Patient (PatientNo, PatientFirstName, PatientLastName, PatientStreetAddress, PatientTown, PatientCounty, PatientPostcode, DOB, Gender, PatientHomeTelephoneNumber, PatientMobileTelephoneNumber)
VALUES (121, 'Miles', 'Malone', '64 Zoo Lane', 'Clapham', 'United Kingdom', 'SW4 9LP', TO_DATE('1989-12-09', 'YYYY-MM-DD'), 'M', 02086950291, 07498635200);

通过指定格式字符串“YYYY-MM-DD”,SQL 可以识别文字“1989-” 12-09' 作为年-月-日格式的日期,并成功将其插入到 DOB 列中。

以上是为什么我的SQL INSERT语句会导致ORA-01861:文字与格式字符串不匹配?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn