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

Datum aus Jahr, Monat und Tag erstellen

Für Ihr Beispiel können Sie case verwenden :

select (case when my_year is not null and my_year <> 0 and
                  my_year between -4713 and 9999
             then TO_DATE(my_year || '-01-01', 'YYYY-MM-DD')
        end)

Leider hat Oracle keine Methode, um die Konvertierung nach Möglichkeit durchzuführen und ansonsten NULL zurückzugeben. SQL Server hat kürzlich try_convert() eingeführt zu diesem Zweck.

Eine Möglichkeit besteht darin, eine eigene Funktion mit einem Ausnahmehandler für die fehlgeschlagene Konvertierung zu schreiben. Der Ausnahmehandler würde einfach NULL zurückgeben für ein schlechtes Format.