sql >> Database >  >> RDS >> Oracle

Waarom kan ik deze datum niet in een tabel invoeren met sql?

Oracle doet een impliciete TO_DATE op niet-date letterlijke waarden bij het invoegen in een DATE kolom met de waarde NLS_DATE_FORMAT als het formaatmasker. Als de letterlijke niet-datum overeenkomt met dit formaat, zal het werken (en als dat niet het geval is, dan niet) - echter, als de NLS_DATE_FORMAT ooit wordt gewijzigd, zal het onmiddellijk kapot gaan (het zal enorm lastig zijn om fouten te debuggen omdat de code die werkte niet, maar niemand zal de code hebben gewijzigd).

U kunt uw huidige NLS_DATE_FORMAT . achterhalen met de vraag:

SELECT VALUE
FROM   NLS_SESSION_PARAMETERS
WHERE  PARAMETER = 'NLS_DATE_FORMAT';

Het is beter om expliciet TO_DATE . te gebruiken met het juiste formaatmasker of om een ​​letterlijke ANSI-datum te gebruiken (d.w.z. 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' )
);

Of, door gebruik te maken van land-/taalonafhankelijke ANSI-indeling:

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


  1. Kruisende tijdspannes afvlakken

  2. Activex ListView Control-zelfstudie-01

  3. Tabel- of kolomnaam mag niet beginnen met numeriek?

  4. Mysql_*-functies vervangen door PDO en voorbereide instructies