首页 > 解决方案 > 如何解决 ORA-01861:文字与格式字符串不匹配异常

问题描述

我正在使用 INSERT INTO...SELECT 查询从 TABLE1 中选择一些字段值并将这些值填充到 TABLE2 中。TABLE1 有一个类型为 VARCHAR2(64 BYTE) 的 ENDDATE列,我正在尝试将该数据插入到 TABLE2 中名为 ENDDATE 的另一列中,其中ENDDATE 是 DATE 类型。所以,很明显,当我运行查询时,我遇到了一个异常

ORA-01861: literal does not match format string; nested exception is java.sql.SQLDataException

我尝试过的事情:

  1. 尝试使用将字符串类型转换为日期CAST(CONVERT(VARCHAR(10), a.ENDDATE, 121)) AS ENDDATE_TEMP。我为此缺少表达式错误

  2. 尝试使用TO_DATE ()函数,但出现未知命令错误。我使用的是 Oracle 12c 版本,我相信 TO_DATE 可用于 12c。但仍然无法让它工作。

TABLE1.ENDDATE 的示例数据:20190229 [YYYYMMDD]。

TABLE2.ENDDATE 中的数据应存储为:2019 年 2 月 29 日

我正在使用TO_DATE('20190229','YYYYMMDD')将字符串转换为 DATE。

任何人都可以帮助我如何在查询的 SELECT 部分中转换 ENDDATE 。这种情况的任何最佳选择!

此外,我在查询末尾使用 ENDDATE 值作为 where 条件,例如 WHERE ENDDATE IS NOT NULL。由于某些规定,我无法发布代码片段,我深表歉意。

标签: sqloracle

解决方案


推荐阅读