Jika start_date
adalah NULL, tidak ada pengecualian yang dilemparkan.
select to_date( null, 'mm/dd/yyyy' )
from dual
adalah pernyataan SQL yang benar-benar valid yang mengembalikan NULL.
Kesalahan yang Anda dapatkan sangat menyiratkan bahwa setidaknya beberapa baris di start_date
kolom sebenarnya bukan string dalam format yang Anda harapkan atau peta itu ke tanggal yang tidak valid (yaitu string '13/35/2007'). Anda dapat menulis fungsi yang menguji untuk melihat apakah string dapat dikonversi menjadi tanggal dan mengembalikan tanggal yang dikonversi atau NULL. Anda kemudian dapat menggunakannya sebagai ganti to_date
.
CREATE OR REPLACE FUNCTION my_to_date( p_str IN VARCHAR2,
p_format IN VARCHAR2 )
RETURN DATE
IS
BEGIN
RETURN to_date( p_str, p_format );
EXCEPTION
WHEN OTHERS
THEN
RETURN NULL;
END;
lalu gunakan my_to_date
bukannya to_date
. Itu harus menghilangkan kesalahan yang Anda dapatkan. Anda mungkin ingin membersihkan data, untuk menyingkirkan string yang tidak valid.