'12-JUN-87'
não é uma data, é um literal de string. Se você deseja gerar uma data para inserir em uma tabela, você precisa:
- Use um literal de data ANSI
:
DATE '1987-06-12'
- Ou, explicitamente, converta um literal de string em um data
:
TO_DATE( '12-JUN-87', 'DD-MON-YY', 'NLS_DATE_LANGUAGE = American' )
Se você tentar usar um literal de string como uma data, Oracle tentará convertê-lo implicitamente em uma data usando o
NLS_DATE_FORMAT
parâmetro de sessão como a máscara de formato. Se esta máscara de formato não corresponder ao formato da string, uma exceção será gerada. Observação:os parâmetros da sessão podem ser alterados pelo usuário e podem ser diferentes para cada usuário, portanto, você não deve confiar nesse valor padrão.