Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Por que não consigo inserir essa data em uma tabela usando sql?


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'
);