Oracle fera un TO_DATE implicite sur les littéraux non-date lors de leur insertion dans un DATE colonne utilisant la valeur de NLS_DATE_FORMAT comme masque de format. Si le littéral non-date correspond à ce format, cela fonctionnera (et si ce n'est pas le cas, ce ne sera pas le cas) - cependant, si le NLS_DATE_FORMAT est déjà modifié, il se cassera immédiatement (cela peut être très pénible à déboguer car le code qui fonctionnait ne le fera pas, mais personne n'aura changé le code).
Vous pouvez trouver votre NLS_DATE_FORMAT actuel avec la requête :
SELECT VALUE
FROM NLS_SESSION_PARAMETERS
WHERE PARAMETER = 'NLS_DATE_FORMAT';
Il est préférable d'utiliser explicitement TO_DATE avec le masque de format correct ou d'utiliser un littéral de date ANSI (c'est-à-dire 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' )
);
Ou, en utilisant le format ANSI indépendant des paramètres régionaux/langues :
insert into employees_table
values(
05,
'Sophie',
'Kuchinskey',
'example@sqldat.com',
105,
5000000,
60,
DATE '1994-09-20'
);