'12-JUN-87'
не е дата, а литерал на низ.
Ако искате да генерирате дата, която да вмъкнете в таблица, тогава трябва да направите едно от следните:
- Използвайте ANSI литерал за дата
:
DATE '1987-06-12'
- Или изрично преобразувайте литерал на низ в дата
:
TO_DATE( '12-JUN-87', 'DD-MON-YY', 'NLS_DATE_LANGUAGE = American' )
Ако се опитате да използвате низов литерал като дата, тогава Oracle ще се опита имплицитно да го преобразува в дата използвайки NLS_DATE_FORMAT
параметър на сесията като маска на формат. Ако тази маска на формат не съвпада с формата на низа, ще бъде генерирано изключение.
Забележка:че параметрите на сесията могат да се променят от потребителя и могат да бъдат различни за всеки потребител, така че не трябва да разчитате на тази стойност по подразбиране.