Oracle
 sql >> Database >  >> RDS >> Oracle

Crea data da anno, mese e giorno

Per il tuo esempio, puoi usare 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)

Sfortunatamente, Oracle non dispone di un metodo per eseguire la conversione, se possibile, e altrimenti restituire NULL. SQL Server ha recentemente introdotto try_convert() a questo scopo.

Un'opzione è scrivere la propria funzione con un gestore di eccezioni per la conversione non riuscita. Il gestore delle eccezioni restituirà semplicemente NULL per un formato errato.