sql >> Database >  >> RDS >> Oracle

Hoe de JJJJMMDD-datum te valideren die is opgegeven als parameter PL/SQL

convert(varchar(10), pdate(), 111) lijkt een poging te zijn om de SQL Server convert te gebruiken functie. Dat gaat niet werken in Oracle.

Ik zou gewoon zoiets doen als

DECLARE
  l_dt date;
BEGIN
  l_dt := to_date( pdate, 'yyyymmdd' );
EXCEPTION
  WHEN others
  THEN
    raise_application_error( -20001, pdate || ' is not a date in the format YYYYMMDD' );
END;

Natuurlijk, als u meerdere controles wilt doen, zodat u een andere uitzondering kunt maken als de lengte onjuist is, of een aantal controles wilt toevoegen om ervoor te zorgen dat de datum redelijk is (d.w.z. binnen de laatste 100 jaar of niet meer dan 100 jaar in de toekomst, enz.) zou je dat kunnen doen na de to_date conversie.



  1. Is er een betere manier om de tijd van de dag te extraheren?

  2. hoe te ontsnappen aan speciale tekens in mysql jdbc-verbindingsreeks

  3. nodejs mysql Fout:Verbinding verbroken De server heeft de verbinding verbroken

  4. Accent- en hoofdletterongevoelige sortering in Oracle met LIKE