Oracle ще направи неявно TO_DATE на литерали без дата, когато ги вмъквате в DATE колона, използвайки стойността на NLS_DATE_FORMAT като маска на формат. Ако литералът без дата съвпада с този формат, той ще работи (а ако не, тогава няма да стане) - обаче, ако NLS_DATE_FORMAT се променя някога, то веднага ще се счупи (отстраняването на грешки е огромна мъка, тъй като работещият код няма да го направи, но никой няма да е променил кода).
Можете да разберете текущия си NLS_DATE_FORMAT със заявката:
SELECT VALUE
FROM NLS_SESSION_PARAMETERS
WHERE PARAMETER = 'NLS_DATE_FORMAT';
По-добре е изрично да използвате TO_DATE с правилната маска за формат или да използвате ANSI литерал за дата (т.е. 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' )
);
Или като използвате ANSI формат, независим от локал/език:
insert into employees_table
values(
05,
'Sophie',
'Kuchinskey',
'example@sqldat.com',
105,
5000000,
60,
DATE '1994-09-20'
);