O Oracle fará um
TO_DATE
implícito em literais sem data ao inseri-los em um DATE
coluna usando o valor de NLS_DATE_FORMAT
como a máscara de formato. Se o literal sem data corresponder a esse formato, ele funcionará (e se não funcionar, não funcionará) - no entanto, se o NLS_DATE_FORMAT
for alterado, ele será interrompido imediatamente (qualquer um será um grande problema para depurar, pois o código que estava funcionando não, mas ninguém terá alterado o código). Você pode descobrir seu
NLS_DATE_FORMAT
atual com a consulta:SELECT VALUE
FROM NLS_SESSION_PARAMETERS
WHERE PARAMETER = 'NLS_DATE_FORMAT';
É melhor usar explicitamente
TO_DATE
com a máscara de formato correta ou para usar um literal de data ANSI (ou seja, 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, usando o formato ANSI independente de localidade/idioma:
insert into employees_table
values(
05,
'Sophie',
'Kuchinskey',
'[email protected]',
105,
5000000,
60,
DATE '1994-09-20'
);