sql >> Base de Datos >  >> RDS >> Oracle

¿Por qué no puedo ingresar esta fecha en una tabla usando sql?

Oracle hará un TO_DATE implícito en literales que no son de fecha al insertarlos en un DATE columna usando el valor de NLS_DATE_FORMAT como máscara de formato. Si el literal que no es de fecha coincide con este formato, funcionará (y si no es así, no funcionará); sin embargo, si el NLS_DATE_FORMAT se cambia alguna vez, entonces se romperá inmediatamente (cualquiera que sea un gran dolor de depurar ya que el código que estaba funcionando no lo hará, pero nadie habrá cambiado el código).

Puede averiguar su NLS_DATE_FORMAT actual con la consulta:

SELECT VALUE
FROM   NLS_SESSION_PARAMETERS
WHERE  PARAMETER = 'NLS_DATE_FORMAT';

Es mejor usar explícitamente TO_DATE con la máscara de formato correcta o para usar un literal de fecha ANSI (es decir, 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' )
);

O bien, utilizando el formato ANSI independiente de la configuración regional/idioma:

insert into employees_table
values(
  05,
  'Sophie',
  'Kuchinskey',
  '[email protected]',
  105,
  5000000,
  60,
  DATE '1994-09-20'
);