sql >> Base de Datos >  >> RDS >> Oracle

Crear fecha a partir de año, mes y día

Para su ejemplo, puede 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)

Desafortunadamente, Oracle no tiene un método para realizar la conversión, si es posible, y de lo contrario devolver NULL. SQL Server introdujo recientemente try_convert() para este propósito.

Una opción es escribir su propia función con un controlador de excepciones para la conversión fallida. El controlador de excepciones simplemente devolvería NULL por un mal formato.