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',
'example@sqldat.com',
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',
'example@sqldat.com',
105,
5000000,
60,
DATE '1994-09-20'
);