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