sql >> Database >  >> RDS >> Oracle

Reguliere expressie van een specifieke datumnotatie

Dit is een slecht idee. De alleen manier om te valideren dat een datum correct is, is door te proberen deze om te zetten in een datum. Als de conversie mislukt, is het geen datum; als het succesvol is, dan misschien zijn. Datums zijn veel te complex voor een gewone taal om te ontleden.

Maak dus een functie die het omzet in een datum; je kunt het veel generieker maken dan je hier hebt, zodat het voor andere doeleinden kan worden hergebruikt:

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;

Dit retourneert een datum als het kan valideren dat de datum- en datumnotatie overeenkomen, anders wordt NULL geretourneerd als er een fout is. Uw vraag wordt dan:

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


  1. Schemapatroon zoeken

  2. Ik krijg INSERT niet aan het werk

  3. Controleer op waarde in MySQL-rij

  4. Hoe zie ik alle externe sleutels van een tabel of kolom?