Oracle akan melakukan TO_DATE implicit implisit pada literal non-tanggal saat memasukkannya ke dalam DATE kolom menggunakan nilai NLS_DATE_FORMAT sebagai format topeng. Jika literal non-tanggal cocok dengan format ini maka itu akan berfungsi (dan jika tidak maka tidak akan) - namun, jika NLS_DATE_FORMAT pernah diubah maka akan segera rusak (sangat sulit untuk di-debug karena kode yang berfungsi tidak akan tetapi tidak ada yang akan mengubah kode).
Anda dapat mengetahui NLS_DATE_FORMAT Anda saat ini dengan pertanyaan:
SELECT VALUE
FROM NLS_SESSION_PARAMETERS
WHERE PARAMETER = 'NLS_DATE_FORMAT';
Lebih baik menggunakan TO_DATE secara eksplisit dengan format mask yang benar atau menggunakan literal tanggal ANSI (yaitu DATE '2014-12-01' ).
insert into employees_table
values(
05,
'Sophie',
'Kuchinskey',
'example@sqldat.com',
105,
5000000,
60,
TO_DATE( '20-sep-1994', 'DD-Mon-YYYY' )
);
Atau, menggunakan format ANSI agnostik lokal/bahasa:
insert into employees_table
values(
05,
'Sophie',
'Kuchinskey',
'example@sqldat.com',
105,
5000000,
60,
DATE '1994-09-20'
);