PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

How to_char() Funktioniert in PostgreSQL

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