sql >> Base de Datos >  >> RDS >> Oracle

Validar la fecha en Oracle sin usar la función

Puede probar el formato usando una expresión regular.

Sería algo como:

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

Esto funciona bien. Comprueba que el formato esté en "Número de 4 dígitos / Número de 2 dígitos / Número de 2 dígitos". Es posible que desee algo más fuerte, 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'
      )

Esto verifica el formato y los valores razonables en cada columna. Por supuesto, no verifica el 31 de junio, pero detectará muchos errores.