Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Regulärer Ausdruck eines bestimmten Datumsformats

Das ist eine schlechte Idee. Die nur Ein Weg, um zu überprüfen, ob ein Datum korrekt ist, besteht darin, zu versuchen, es in ein Datum umzuwandeln. Wenn die Konvertierung fehlschlägt, ist es kein Datum; wenn es erfolgreich ist, dann vielleicht sein. Daten sind viel zu komplex, als dass sie von einer regulären Sprache analysiert werden könnten.

Erstellen Sie also eine Funktion, die es in ein Datum umwandelt; Sie können es viel generischer gestalten als hier, sodass es für andere Zwecke wiederverwendet werden kann:

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;

Dies gibt ein Datum zurück, wenn validiert werden kann, dass das Datum und das Datumsformat übereinstimmen, ansonsten wird NULL zurückgegeben, wenn ein Fehler vorliegt. Ihre Abfrage wird dann:

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