Oracle
 sql >> Base de données >  >> RDS >> Oracle

Créer une date à partir de l'année, du mois et du jour

Pour votre exemple, vous pouvez utiliser case :

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)

Malheureusement, Oracle n'a pas de méthode pour effectuer la conversion, si possible, et sinon renvoyer NULL. SQL Server a récemment introduit try_convert() à cet effet.

Une option consiste à écrire votre propre fonction avec un gestionnaire d'exceptions pour la conversion qui a échoué. Le gestionnaire d'exception renverrait simplement NULL pour un mauvais format.