Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Ändern Sie das Datumsformat „JJJJ/MM/TT“ in „MM-TT-JJJJ“ in Oracle

to_date() nimmt Ihren String-Parameter, passt ihn an das Format an, das Sie im zweiten Parameter angeben, und erstellt daraus ein Datumsfeld. Das Datumsfeld verwendet nicht das Format, das Sie im zweiten Parameter angegeben haben - tatsächlich wird es mit einer internen Datendarstellung gespeichert, die überhaupt kein Format hat (aller Wahrscheinlichkeit nach eine Zahl).

Um ein Format wieder in den Ergebnissen eines Datumsfelds darzustellen, haben Sie folgende Möglichkeiten:

  1. Lassen Sie den Client, der die Abfrage ausführt, die NLS-Parameter (auf Sitzungsebene) festlegen, um ein lokalisiertes Format bereitzustellen, mit einem ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD'; Anweisung) oder
  2. Verwenden Sie to_char(..., 'YYYY-MM-DD') um Ihr vorhandenes Feld herum, um das Datum wieder in eine Zeichenfolge umzuwandeln, die so formatiert ist, wie Sie es haben möchten. Wo Sie ... ersetzen mit Ihrer aktuellen Spaltendefinition in select.

Ansatz Nr. 1 ist bereits im Gange, da es bereits ein NLS_DATE_FORMAT-Set gibt, das das aktuelle Format erzeugt, aber es hat ein Format, das Sie nicht wollen. Wenn Sie es also kontrollieren und dort ändern können, können Sie es tun Weg. Wenn dies nicht möglich ist und Sie das Format auf eine einzige konsistente andere Weise haben müssen, könnte Nr. 2 der richtige Weg sein.