Oracle eseguirà un implicito TO_DATE
su valori letterali non di data quando li inserisci in un DATE
colonna utilizzando il valore di NLS_DATE_FORMAT
come maschera di formato. Se il valore letterale non di data corrisponde a questo formato, funzionerà (e in caso contrario non funzionerà), tuttavia, se NLS_DATE_FORMAT
viene mai modificato, quindi si interromperà immediatamente (qualsiasi problema per il debug poiché il codice che stava funzionando non funzionerà, ma nessuno avrà cambiato il codice).
Puoi scoprire il tuo attuale NLS_DATE_FORMAT
con la domanda:
SELECT VALUE
FROM NLS_SESSION_PARAMETERS
WHERE PARAMETER = 'NLS_DATE_FORMAT';
È meglio usare esplicitamente TO_DATE
con la maschera di formato corretta o per utilizzare una data letterale ANSI (ad esempio 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' )
);
Oppure, utilizzando il formato ANSI indipendente dalla lingua/località:
insert into employees_table
values(
05,
'Sophie',
'Kuchinskey',
'[email protected]',
105,
5000000,
60,
DATE '1994-09-20'
);