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',
'[email protected]',
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',
'[email protected]',
105,
5000000,
60,
DATE '1994-09-20'
);