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

Expresión regular de un formato de fecha específico

Esta es una mala idea. El único La forma de validar que una fecha es correcta es intentar convertirla en una fecha. Si la conversión falla, entonces no es una fecha; si tiene éxito entonces podría ser. Las fechas son demasiado complejas para que las analice un lenguaje normal.

Entonces, cree una función que lo convierta en una fecha; puede hacer que sea mucho más genérico que el que tiene aquí, de modo que pueda reutilizarse para otros fines:

create or replace function validate_date (
     PDate in varchar2
   , PDateFormat in varchar2
     ) return date is
begin
   return to_date(PDate, PDateFormat);
exception when others then
   return null;
end;

Esto devuelve una fecha si es capaz de validar que la fecha y el formato de fecha coincidan; de lo contrario, devuelve NULL si hay algún error. Su consulta se convierte en:

select 'P' from dual where validate_date('20140506', 'yyyymmdd') is not null