Oracle
 sql >> Base de données >  >> RDS >> Oracle

Pourquoi ne puis-je pas entrer cette date dans une table à l'aide de SQL ?

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