Tenho bastante experiência com outros SQLs (PostgreSQL, Microsoft Server, MySQL, SQLite), mas não tanto em Oracle.
Existe alguma maneira de fazer com que o Oracle aceite literais de data no formato ISO8601. Por exemplo:
CREATE TABLE data (
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
name VARCHAR(255),
when DATE
);
INSERT INTO data(name,when) VALUES ('Fred','2021-10-05');
-- ORA-01861: literal does not match format string
Veja este DBFiddle .
Certamente deve haver como interruptor.
O mesmo se aplicaria à saída de datas: existe uma maneira de garantir datas formatadas em ISO8601?
Oracle suporta o literal de data ANSI
Se você quiser confiar na conversão implícita de tipo de dados de strings para datas e datas para strings, isso é controlado pelo
nls_date_format
Se você fizer isso, sua string será convertida implicitamente em um
date
e quaisquer consultas que você executar converterão implicitamente
date
em uma string no formato ISO.Geralmente, no entanto, é desaprovado confiar na conversão implícita porque outra pessoa pode se conectar ao seu banco de dados e especificar uma configuração diferente para sua sessão e, em seguida, você obterá erros ou conversões incorretas. Você geralmente prefere conversões explícitas de um tipo de dados para outro.