A solução adequada e simples é:
SELECT to_char(b.foo,'dd/MM/yyyy') as foo, b.bar
FROM baz b
ORDER BY b.foo;
A coluna de data formatada
foo
é uma coluna completamente nova para o planejador de consulta, que entra em conflito com a coluna da tabela foo
. Nas cláusulas ORDER BY e GROUP BY, os nomes das colunas de saída têm precedência sobre as colunas da tabela. O nome não qualificado foo
se referiria à coluna de saída. Para usar a coluna da tabela original na cláusula ORDER BY, basta qualificar a coluna na tabela .
Qualifiquei todas as colunas da tabela para esclarecer meu ponto de vista. Só seria necessário na cláusula ORDER BY neste caso. Alias da tabela
b
é apenas por conveniência.