【发布时间】:2019-03-21 12:15:08
【问题描述】:
以下语句在11-Jan-2019 上引发错误
我们将 paydate 的值检查为20190111,并且从源头上看是正确的。
但是,代码仍然会引发错误。
ORA-01841:(完整)年份必须介于 -4713 和 +9999 之间,并且不能为 0
INSERT INTO <New_TABLE_NAME>
SELECT *
FROM <old_table_name>
WHERE paydate =TO_DATE(e_paydate,'YYYYMMDD');
【问题讨论】:
-
如果你说的是真的,那么Oracle有一个bug。否则,它是正确的,你在曲解现实。请张贴表格的描述和示例数据以及证明您所说的 SQL*Plus 会话。
-
创建了具有相同描述的同一张表,为 20190111 加载了相同的数据,并且加载完美。不知道那天(1 月 11 日)运行失败。我们过去有 3 次运行失败的相同日期。 (20160101、20111011 和 20190111)如果我们看到 mm 和 dd 值只包含 0 和 1 位,则其他运行成功完成。
-
您在
WHERE paydate =TO_DATE(paydate,'YYYYMMDD')处将列与其自身进行比较。你确定你的代码是这样的吗? -
它是 to_date 函数中的一个变量。
-
请edit your question提供相关详情。如果是
v_paydate而不是paydate,则编辑它,使查询有意义,并包括paydate和v_paydate的数据类型。
标签: sql oracle oracle10g date-format to-date