Oracle provede implicitní TO_DATE na nedatové literály při jejich vkládání do DATE pomocí hodnoty NLS_DATE_FORMAT jako masku formátu. Pokud se nedatový literál shoduje s tímto formátem, bude fungovat (a pokud ne, pak nebude) – pokud však NLS_DATE_FORMAT pokud se někdy změní, okamžitě se rozbije (cokoli je velmi obtížné ladit, protože kód, který fungoval, se to nezmění, ale nikdo kód nezmění).
Můžete zjistit svůj aktuální NLS_DATE_FORMAT s dotazem:
SELECT VALUE
FROM NLS_SESSION_PARAMETERS
WHERE PARAMETER = 'NLS_DATE_FORMAT';
Je lepší explicitně použít TO_DATE se správnou maskou formátu nebo použít datový doslov ANSI (tj. 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' )
);
Nebo pomocí formátu ANSI agnostického národního prostředí/jazyka:
insert into employees_table
values(
05,
'Sophie',
'Kuchinskey',
'example@sqldat.com',
105,
5000000,
60,
DATE '1994-09-20'
);