In Postgres to_char()
ist eine Formatierungsfunktion für Datentypen, die ihr erstes Argument in einen String umwandelt.
Das Format des Strings wird durch das zweite Argument bestimmt.
Der to_char()
Funktion kann verwendet werden, um die folgenden Konvertierungen durchzuführen:
- Zeitstempel für Zeichenfolge
- Intervall zu Zeichenfolge
- Integer zu String
- reelle/doppelte Genauigkeit in Zeichenfolge
- numerisch zu Zeichenfolge
Syntax
Die Syntax lautet wie folgt:
to_char(timestamp, text)
to_char(interval, text)
to_char(int, text)
to_char(double precision, text)
to_char(numeric, text)
Wobei das erste Argument der zu konvertierende Wert (in einem der aufgelisteten Datentypen) und text
ist ist eine Formatzeichenfolge, mit der das erste Argument formatiert werden soll.
Beispiel
Hier ist ein Beispiel für die Formatierung eines Datumswerts:
SELECT to_char(date '2020-12-25', 'Day, DD Month YYYY');
Ergebnis:
Friday , 25 December 2020
In diesem Fall die Formatzeichenfolge Day, DD Month YYYY
bestimmt, wie das Datum formatiert wird, wenn es von to_char()
als String zurückgegeben wird .
Vorlagenmuster
Der Formatstring besteht aus einem oder mehreren Vorlagenmustern .
Im vorherigen Beispiel war meine Formatzeichenfolge Day, DD Month YYYY
. Daher bestand es aus den folgenden Vorlagenmustern:
Day
DD
Month
YYYY
Ich hätte mehr oder weniger Vorlagenmuster verwenden können, und die Ausgabe wäre anders gewesen.
Zum Beispiel hätte ich Folgendes tun können:
SELECT to_char(date '2020-12-25', 'Day');
Ergebnis:
Friday
Alternativ hätte mein Format-String auch aus einer anderen Reihe von Vorlagenmustern insgesamt bestehen können.
Zum Beispiel:
SELECT to_char(date '2020-12-25', 'Dy, DD Mon YY');
Ergebnis:
Fri, 25 Dec 20
Vorlagenmuster-Modifikatoren
Sie können Ihrer Formatzeichenfolge auch Vorlagenmustermodifikatoren hinzufügen.
Das Ergebnis wird je nach verwendetem Modifikator leicht unterschiedlich sein.
Das folgende Beispiel stellt beispielsweise den Tag des Monats als Ordnungszahl dar.
SELECT to_char(date '2020-12-25', 'Day, DDth Month YYYY');
Ergebnis:
Friday , 25 December 2020
Dies ist dasselbe wie im ersten Beispiel, aber der Unterschied besteht darin, dass ich den th
hinzugefügt habe Vorlagenmodifikator als Suffix an DD
Vorlagenmuster. Dadurch wird das Suffix der Ordnungszahl an den Tag des Monats angehängt.
Daher landen wir bei 25. statt nur 25 .
Um den Effekt des Vorlagenmodifikators hervorzuheben, sehen Sie hier, wie er auf verschiedene Werte angewendet wird.
SELECT
to_char(date '2020-12-01', 'DDth') AS "1",
to_char(date '2020-12-02', 'DDth') AS "2",
to_char(date '2020-12-03', 'DDth') AS "3",
to_char(date '2020-12-04', 'DDth') AS "4";
Ergebnis:
1 | 2 | 3 | 4 ------+------+------+------ 01st | 02nd | 03rd | 04th
Ich könnte einen weiteren Modifikator hinzufügen, um die führenden Nullen bei Bedarf zu unterdrücken.
SELECT
to_char(date '2020-12-01', 'FMDDth') AS "1",
to_char(date '2020-12-02', 'FMDDth') AS "2",
to_char(date '2020-12-03', 'FMDDth') AS "3",
to_char(date '2020-12-04', 'FMDDth') AS "4";
Ergebnis:
1 | 2 | 3 | 4 -----+-----+-----+----- 1st | 2nd | 3rd | 4th
In diesem Fall habe ich FM
hinzugefügt das ist für "Füllmodus". Dieser Modifikator unterdrückt führende Nullen und das Auffüllen von Leerzeichen.
Numerisch
Das vorherige Beispiel kann auch auf numerische Werte angewendet werden.
Wenn Sie jedoch numerische Werte verwenden, müssen Sie D
austauschen entweder mit 9
oder 0
.
SELECT
to_char(1, '9th') AS "1",
to_char(2, '9th') AS "2",
to_char(3, '9th') AS "3",
to_char(4, '9th') AS "4";
Ergebnis:
1 | 2 | 3 | 4 ------+------+------+------ 1st | 2nd | 3rd | 4th
Liste der Vorlagenmuster und Modifikatoren
Welche Vorlagenmuster Sie tatsächlich verwenden können, hängt davon ab, ob Sie einen Datums-/Uhrzeitwert oder eine Zahl formatieren.
Eine vollständige Liste der verfügbaren Vorlagenmuster finden Sie unter:
- Vorlagenmuster und Modifikatoren für Datums-/Uhrzeitformatierung
- Vorlagenmuster und Modifikatoren für die numerische Formatierung