to_date() nimmt Ihren String-Parameter, passt ihn an das Format an, das Sie im zweiten Parameter angeben, und erstellt ein Datumsfeld daraus. Das Datumsfeld verwendet nicht das Format, das Sie im zweiten Parameter angegeben haben - tatsächlich wird es unter Verwendung einer internen Datenrepräsentation gespeichert, die überhaupt kein Format hat (höchstwahrscheinlich eine Zahl).
Um ein Format wieder aus in den Ergebnissen aus einem Datumsfeld zu präsentieren, können Sie entweder:
- Haben Sie den Client Ausführen der Abfrage die NLS-Parameter (auf Session-Ebene) setzen einen lokalisierten Format zur Verfügung zu stellen, mit eine
ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD';
-Anweisung) oder
- Verwenden Sie
to_char(..., 'YYYY-MM-DD')
um Ihr vorhandenes Feld, um das Datum zurück in eine Zeichenfolge zu formatieren, wie Sie es haben möchten. Wo ersetzen Sie ...
mit Ihrer aktuellen Spaltendefinition in der Auswahl.
Ansatz # 1 ist bereits im Gang, da es schon würde ein NLS_DATE_FORMAT eingestellt wird, dass das aktuelle Format produziert, aber es ist mit einem Format, das Sie wollen nicht, also wenn Sie es steuern können und es dort ändern Du kannst es so machen. Wenn Sie nicht können und Sie müssen das Format eine einzige konsistente andere Art haben, dann könnte # 2 der Weg sein.
Dies ist die richtige Antwort. Für "Produktions" -Abfragen ist es immer am besten, to_char (DATE_COLUMN, '.....') mit dem gewünschten Datumsformatmodell zu verwenden, da wir die NLS-Einstellungen eines anderen Benutzers nicht steuern können; Aber für das OP, das nur Ergebnisse für sich selbst überprüft, reicht die Lösung NLS_DATE_FORMAT aus. HINWEIS bezüglich des internen Formats, das Oracle für die interne Speicherung von Daten verwendet: "BluShadow" bei OTN hat eine gute Erklärung. Um das herauszufinden, können Sie SELECT DUMP (SYSDATE) FROM DUAL ausführen und versuchen, es zu verstehen. Es ist nicht offensichtlich - aber es ist keine Nummer, es sind sieben Zahlen. – mathguy
Link: https://community.oracle.com/docs/DOC-991195 – mathguy
@mathguy Das Format eines Datums ist auch auf [Stackoverflow-Dokumentation] (http://stackoverflow.com/documentation/oracle/2087/dates/ 6848/the-Format eines Datums # t = 201607240002226712408). – MT0