Oracle wird ein implizites TO_DATE
ausführen auf Nicht-Datumsliterale, wenn sie in ein DATE
eingefügt werden Spalte mit dem Wert von NLS_DATE_FORMAT
als Formatmaske. Wenn das Nicht-Datumsliteral mit diesem Format übereinstimmt, funktioniert es (und wenn nicht, dann nicht) - wenn jedoch NLS_DATE_FORMAT
jemals geändert wird, wird es sofort kaputt gehen (das Debuggen kann sehr mühsam sein, da der Code, der funktioniert hat, nicht funktioniert, aber niemand den Code geändert hat).
Sie können Ihr aktuelles NLS_DATE_FORMAT
herausfinden mit der Abfrage:
SELECT VALUE
FROM NLS_SESSION_PARAMETERS
WHERE PARAMETER = 'NLS_DATE_FORMAT';
Es ist besser, ausdrücklich TO_DATE
zu verwenden mit der richtigen Formatmaske oder um ein ANSI-Datumsliteral zu verwenden (d. h. 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' )
);
Oder unter Verwendung des gebietsschema-/sprachunabhängigen ANSI-Formats:
insert into employees_table
values(
05,
'Sophie',
'Kuchinskey',
'[email protected]',
105,
5000000,
60,
DATE '1994-09-20'
);