Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Validar data no Oracle sem usar função


Você pode testar o formato usando uma expressão regular.

Seria algo como:
select dates
from tbl
where regexp_like(dates, '[[:digit:]]{4}/[[:digit:]]{2}/[[:digit:]]{2}')

Isso funciona bem. Verifica se o formato está em "número de 4 dígitos / número de 2 dígitos / número de 2 dígitos". Você pode querer algo mais forte, como:
select dates
from tbl
where regexp_like(dates, '[[:digit:]]{4}/[[:digit:]]{2}/[[:digit:]]{2}') or
      (substr(dates, 1, 4) not between '1900' and '2014' or
       substr(dates, 6, 2) not between '01' and '12' 
       substr(dates, 9, 2) not between '01' and '31'
      )

Isso verifica o formato e os valores razoáveis ​​em cada coluna. Claro, ele não verifica para 31 de junho, mas detectará muitos erros.