Sebagai contoh, Anda dapat menggunakan 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)
Sayangnya, Oracle tidak memiliki metode untuk melakukan konversi, jika memungkinkan, dan sebaliknya mengembalikan NULL. SQL Server baru-baru ini memperkenalkan try_convert()
untuk tujuan ini.
Salah satu opsi adalah menulis fungsi Anda sendiri dengan penangan pengecualian untuk konversi yang gagal. Handler pengecualian hanya akan mengembalikan NULL
untuk format yang buruk.