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

Validieren Sie das Datum in Oracle, ohne die Funktion zu verwenden

Sie können das Format mit einem regulären Ausdruck testen.

Es wäre so etwas wie:

select dates
from tbl
where regexp_like(dates, '[[:digit:]]{4}/[[:digit:]]{2}/[[:digit:]]{2}')

Das funktioniert in Ordnung. Es prüft, ob das Format "4-stellige Zahl / 2-stellige Zahl / 2-stellige Zahl" ist. Vielleicht möchten Sie etwas Stärkeres, wie zum Beispiel:

select dates
from tbl
where regexp_like(dates, '[[:digit:]]{4}/[[:digit:]]{2}/[[:digit:]]{2}') or
      (substr(dates, 1, 4) not between '1900' and '2014' or
       substr(dates, 6, 2) not between '01' and '12' 
       substr(dates, 9, 2) not between '01' and '31'
      )

Dies überprüft das Format und auf sinnvolle Werte in jeder Spalte. Natürlich sucht es nicht nach dem 31. Juni, aber es werden viele Fehler erkannt.