Die richtige und einfache Lösung ist:
SELECT to_char(b.foo,'dd/MM/yyyy') as foo, b.bar
FROM baz b
ORDER BY b.foo;
Die formatierte Datumsspalte foo
ist eine völlig neue Spalte für den Abfrageplaner, die zufällig mit der Tabellenspalte foo
kollidiert . In den Klauseln ORDER BY und GROUP BY haben die Namen der Ausgabespalten Vorrang vor den Tabellenspalten. Der nicht qualifizierte Name foo
würde sich auf die Ausgabespalte beziehen.
Um die ursprüngliche Tabellenspalte in der ORDER BY-Klausel zu verwenden, qualifizieren Sie die Spalte einfach .
Ich habe alle Tabellenspalten tabellenqualifiziert, um meinen Punkt zu verdeutlichen. Wäre in diesem Fall nur in der ORDER BY-Klausel erforderlich. Tabellenalias b
dient nur der Bequemlichkeit.