Como identificar valores inválidos (corrompidos) armazenados nas colunas Oracle DATE
Oracle 10.2.0.5
Qual é a maneira mais fácil de identificar linhas em uma tabela com valores "inválidos" nas colunas DATE. Por "inválido", o que quero dizer é uma representação binária que viola as regras do Oracle para valores de dat
ecentemente, tive um problema com uma data inválida armazenada em uma colun
Consegui usar um predicado de consulta para encontrar uma linha problemática específica:
WHERE TO_CHAR(date_expr,'YYYYMMDDHH24MISS') = '00000000000000'
No caso, o byte do século era inválido ...
select dump(h.bid_close_date) from mytable h where h.id = 54321
Typ=12 Len=7: 220,111,11,2,1,1,1
O byte do século deve ser de 100 + dois dígitos. Nesse caso, foram adicionados 100 adicionais, como se o valor do século fosse "120", tornando o ano "12011". (A única maneira que sei obter valores DATE inválidos no banco de dados é usando OCI, usando representação DATE nativa de 7 bytes.)
Nesse caso, a função TO_CHAR retornou uma string identificável, que eu poderia usar para identificar o valor DAKE instáve
Minha pergunta: existe uma abordagem mais geral ou mais fácil (de preferência usando uma instrução SQL SELECT) para identificar linhas com valores "inválidos" nas colunas DAT