Oracle kommer att göra en implicit TO_DATE
på icke-datumbokstavar när du infogar dem i en DATE
kolumnen med värdet NLS_DATE_FORMAT
som formatmask. Om den icke-datumliteralen matchar det här formatet kommer den att fungera (och om den inte gör det kommer den inte att fungera) - dock om NLS_DATE_FORMAT
ändras så kommer den omedelbart att gå sönder (det är svårt att felsöka eftersom koden som fungerade inte kommer att fungera men ingen kommer att ha ändrat koden).
Du kan ta reda på din nuvarande NLS_DATE_FORMAT
med frågan:
SELECT VALUE
FROM NLS_SESSION_PARAMETERS
WHERE PARAMETER = 'NLS_DATE_FORMAT';
Det är bättre att uttryckligen använda TO_DATE
med rätt formatmask eller att använda en ANSI-datumliteral (dvs. 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' )
);
Eller genom att använda språkagnostiska ANSI-format:
insert into employees_table
values(
05,
'Sophie',
'Kuchinskey',
'[email protected]',
105,
5000000,
60,
DATE '1994-09-20'
);