ORA-01861错误咨询:字面量与格式字符串不匹配问题
解决ORA-01861: 字面量与格式字符串不匹配错误
问题原因
- Oracle默认的日期解析格式(通常为
DD-MON-RR,比如20-AUG-22)与你插入的'2022-08-20'(YYYY-MM-DD格式)不匹配,无法将字符串隐式转换为DATE类型,触发ORA-01861错误。 - 此外,
OrderNumber定义为NUMBER类型,你传入了带单引号的字符串值'1234567899',虽然Oracle可能进行隐式转换,但这种写法不符合规范,可能引发其他潜在问题。
解决方案
方案一:使用TO_DATE函数显式转换日期(推荐)
通过TO_DATE()函数指定日期字符串的格式,确保Oracle能正确解析,同时修正OrderNumber的写法:
INSERT INTO TableTwo (OrderNumber, FirstSeenDate, Street1, City, State, Zip, LastModifiedDate) VALUES (1234567899, TO_DATE('2022-08-20', 'YYYY-MM-DD'), 'P.O BOX 340', 'Boca Raton', 'FL', '33435', TO_DATE('2022-10-12', 'YYYY-MM-DD'));
方案二:修改会话日期格式
先设置当前会话的日期解析格式为YYYY-MM-DD,再执行插入(同样需要修正OrderNumber的写法):
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD'; INSERT INTO TableTwo (OrderNumber, FirstSeenDate, Street1, City, State, Zip, LastModifiedDate) VALUES (1234567899, '2022-08-20', 'P.O BOX 340', 'Boca Raton', 'FL', '33435','2022-10-12');
注意:该方案仅对当前会话生效,切换会话或重启数据库后需要重新设置,因此方案一的显式转换更具通用性和稳定性。
内容的提问来源于stack exchange,提问作者Aser Jeune
相关产品推荐
相关产品推荐

