Oracle - 文字与格式字符串不匹配错误 [重复]
Posted
技术标签:
【中文标题】Oracle - 文字与格式字符串不匹配错误 [重复]【英文标题】:Oracle - literal does not match format string error [duplicate] 【发布时间】:2012-11-22 18:45:16 【问题描述】:可能重复:Simple Oracle query: literal does not match format string
我收到以下错误:
INSERT INTO CatalogueEntry VALUES('2001-12-10', 2, 14.99, 1, 0)
ERROR at line 1: ORA-01861: literal does not match format string `
第一个字段是DATE
格式。
有什么想法吗?
谢谢。
【问题讨论】:
【参考方案1】:当您将字符串值插入日期列时,您需要在INSERT
期间使用to_date()
函数将其转换为日期。使用此函数时,您将提供字符串的格式。
to_date()
函数格式:
to_date( string1, [ format_mask ], [ nls_language ] )
所以你的查询会是这样的:
insert into CatalogueEntry
values
(
to_date('2001-12-10', 'yyyy-mm-dd'),
2,
14.99,
1,
0);
见SQL Fiddle with demo
【讨论】:
另一种选择是使用 ANSI SQL 文字:date '2001-12-10'
@a_horse_with_no_name date
文字取决于 NLS_DATE_FORMAT 设置,因此不能作为 OP 问题的替代解决方案。
@NicholasKrasnov:ANSI 日期文字完全独立于任何 NLS 或其他环境设置(它必须为YYYY-MM-DD
)。所以这 是 一个有效的替代方案(更少的输入并且实际上可以在广泛的 DBMS 中工作)
@a_horse_with_no_name 哦,我的,当然 :)。由于某种原因,我错误地假设相反。
@a_horse_with_no_name 我不知道您可以使用这样的 ANSI SQL Literal。感谢您的信息。【参考方案2】:
试试这个 SQL:
INSERT INTO CatalogueEntry
VALUES(to_date('2001-12-10','yyyy-mm-dd'), 2, 14.99, 1, 0);
【讨论】:
以上是关于Oracle - 文字与格式字符串不匹配错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Oracle sql 错误 : ORA-01861: 文字与格式字符串不匹配和日期与字符串互转问题解决
查询 SQL语句的时候 出现oracle ora 01861 文字与字符串格式不匹配 百思不得其解!
SQL 错误:ORA-01861:文字与格式字符串 01861 不匹配