例如,您可以使用
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)
不幸的是,Oracle没有一种方法(如果可能)进行转换,否则将返回NULL。SQL Server最近
try_convert()为此目的而引入。
一种选择是为失败的转换编写带有异常处理程序的函数。异常处理程序只会返回
NULL错误的格式。



