gpt4 book ai didi

sql - 如何识别存储在 Oracle DATE 列中的无效(损坏)值

转载 作者:行者123 更新时间:2023-12-03 23:49:40 27 4
gpt4 key购买 nike

甲骨文 10.2.0.5

识别表中在 DATE 列中具有“无效”值的行的最简单方法是什么。这里的“无效”是指违反 Oracle 日期值规则的二进制表示。

我最近遇到了存储在列中的无效日期的问题。

我能够使用查询谓词来查找特定的有问题的行:

  WHERE TO_CHAR(date_expr,'YYYYMMDDHH24MISS') = '00000000000000'

在我的情况下,世纪字节无效......
 select dump(h.bid_close_date) from mytable h where h.id = 54321

Typ=12 Len=7: 220,111,11,2,1,1,1

世纪字节应该是 100 + 两位数的世纪。在这种情况下,添加了额外的 100,就像世纪值是“120”一样,使年份成为“12011”。 (我知道将无效 DATE 值输入数据库的唯一方法是使用 OCI,使用 native 7 字节 DATE 表示。)

在这种情况下,TO_CHAR 函数返回一个可识别的字符串,我可以用它来识别不稳定的 DATE 值。

我的问题:是否有更通用或更简单的方法(最好使用 SQL SELECT 语句)来识别 DATE 列中具有“无效”值的行。

最佳答案

这标识了无效的月份

SELECT rowid,
pk_column,
DUMP(date_column, 1010) AS dump1
FROM table
WHERE TO_NUMBER(SUBSTR(DUMP(date_column, 1010), INSTR(DUMP( date_column, 1010),
',', 1, 2
) + 1,
INSTR(DUMP(date_column, 1010), ',', 1, 3) - (
INSTR(DUMP( date_column, 1010), ',', 1, 2) + 1
))) = 0;

使用相同的 where 子句更新,我发现在这些情况下月份数为零。

关于sql - 如何识别存储在 Oracle DATE 列中的无效(损坏)值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8734540/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com