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: 文字与格式字符串不匹配和日期与字符串互转问题解决

Oracle:文字与字符串不匹配

查询 SQL语句的时候 出现oracle ora 01861 文字与字符串格式不匹配 百思不得其解!

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

oracle ORA-01861: 文字与格式字符串不匹配 move_date是date类型

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