sql >> Databáze >  >> RDS >> Oracle

Jak ověřit datum RRRRMMDD uvedené jako parametr PL/SQL

convert(varchar(10), pdate(), 111) se zdá být pokusem použít SQL Server convert funkce. To v Oracle nebude fungovat.

Udělal bych něco jako

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;

Samozřejmě, pokud chcete provést více kontrol, abyste mohli vyvolat jinou výjimku, pokud je délka nesprávná, nebo přidat nějaké kontroly, abyste zajistili, že datum je přiměřené (tj. musí být za posledních 100 let nebo ne více než 100 let v budoucnost atd.), můžete to udělat po to_date konverze.



  1. MS SQL ekvivalentní k MySQL uživatelem definovaným proměnným v dotazech

  2. Mysql naformátujte řetězec jako XXXXXXXXXXXX až XX-XX-XXXXXXX-X

  3. Nejlepší způsob, jak uložit data XML v databázi MySQL, s určitými specifickými požadavky

  4. Jak vytvořit ENUM v SQLAlchemy?