Voor uw voorbeeld kunt u case
. gebruiken :
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)
Helaas heeft Oracle geen methode om de conversie uit te voeren, indien mogelijk, en anders NULL terug te geven. SQL Server introduceerde onlangs try_convert()
voor dit doel.
Een optie is om uw eigen functie te schrijven met een uitzonderingshandler voor de mislukte conversie. De exception-handler zou gewoon NULL
return teruggeven voor een slecht formaat.