Prawidłowe i proste rozwiązanie to:
SELECT to_char(b.foo,'dd/MM/yyyy') as foo, b.bar
FROM baz b
ORDER BY b.foo;
Sformatowana kolumna daty foo
to zupełnie nowa kolumna dla planera zapytań, która koliduje z kolumną tabeli foo
. W klauzulach ORDER BY i GROUP BY nazwy kolumn wyjściowych mają pierwszeństwo przed kolumnami tabeli. Niekwalifikowana nazwa foo
odwołuje się do kolumny danych wyjściowych.
Aby użyć oryginalnej kolumny tabeli w klauzuli ORDER BY, po prostu zakwalifikowaj tę kolumnę do tabeli .
Zakwalifikowałem wszystkie kolumny tabeli, aby wyjaśnić mój punkt widzenia. Będzie to wymagane tylko w klauzuli ORDER BY w tym przypadku. Alias tabeli b
jest tylko dla wygody.