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