【发布时间】:2021-07-15 01:00:33
【问题描述】:
在我们的 Oracle 数据库中,其中一列的日期值为 00/00/0000 00:00:00 00 的行很少,这会导致带有链接 MS 访问表的连接表达式出现问题。所以我想选择该行并更新或删除它。
我发现我们使用这个查询有这样一个日期:
Select TO_CHAR(Min(INVENTORY_DATE), 'MM/DD/YYYY HH:MI:SS AM') "Min Date"
FROM SOMESCHEMA.INVENTORY;
但它没有出现在这个 Select 查询中:
Select TO_CHAR(INVENTORY_DATE, 'MM/DD/YYYY HH:MI:SS AM') "Inventory Date", MyTable.*
From SOMESCHEMA.INVENTORY MyTable
Where INVENTORY_DATE = TO_DATE('00/00/0000 00:00:00 00', 'MM/DD/YYYY HH:MI:SS AM ')
order by MyTable.INVENTORY_DATE ASC NULLS LAST
FETCH FIRST 10 ROWS ONLY;
它给了我一个错误,说我需要为月、日、年和 AM/PM 输入一些值,但这样我就找不到 00/00/0000 00:00:00 00 日期的记录。
如何找到这些行?
谢谢!
【问题讨论】:
-
旧值可能已损坏,like this one。可能没有办法确定值应该是什么。我会调查损坏的值可能来自哪里,以阻止它再次发生。
-
@AlexPoole:谢谢亚历克斯。这是一个有趣的链接。这是一个非常古老的数据库,因此很可能在他们在应用程序中进行一些验证之前就发生了。现在我们将那个 10g Oracle 数据库迁移到 19c,它是从 MS Access 2016 前端调用的,现在我们看到了问题。希望将这些损坏的日期更新为有效的日期将为我们解决此问题。
-
即使第0年有效,我很好奇
00应该如何转换为am或pm。