Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Criar data do ano, mês e dia


Para o seu exemplo, você pode usar 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)

Infelizmente, o Oracle não tem um método de fazer a conversão, se possível, e retornar NULL. O SQL Server introduziu recentemente try_convert() para este fim.

Uma opção é escrever sua própria função com um manipulador de exceção para a conversão com falha. O manipulador de exceção simplesmente retornaria NULL para um formato ruim.