to_date() pega seu parâmetro de string, combina com o formato que você fornece no segundo parâmetro e constrói um campo de data a partir dele. O campo de data não está usando o formato fornecido no segundo parâmetro - na verdade, ele será armazenado usando alguma representação de dados interna que não tem formato (um número, com toda a probabilidade).
Para apresentar um formato de volta nos resultados de um campo de data, você pode:
- Faça com que o cliente que executa a consulta defina os parâmetros NLS (no nível da sessão) para fornecer um formato localizado, com um
ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD';
declaração) ou - Use
to_char(..., 'YYYY-MM-DD')
em torno de seu campo existente para transformar a data novamente em uma string formatada da maneira que você deseja. Onde você substitui...
com sua definição de coluna atual na seleção.
A abordagem #1 já está acontecendo, pois já haverá um conjunto NLS_DATE_FORMAT que está produzindo o formato atual, mas está com um formato que você não quer, então se você pode controlá-lo e alterá-lo lá, você pode fazer isso caminho. Se você não pode e deve ter o formato de uma única forma consistente, então o #2 pode ser o caminho a seguir.