sql >> Databasteknik >  >> RDS >> PostgreSQL

How to_char() Fungerar i PostgreSQL

I Postgres, to_char() är en datatypsformateringsfunktion som konverterar sitt första argument till en sträng.

Formatet på strängen bestäms av det andra argumentet.

to_char() funktionen kan användas för att göra följande konverteringar:

  • tidsstämpel till sträng
  • intervall till sträng
  • heltal till sträng
  • verklig/dubbel precision till sträng
  • numerisk till sträng

Syntax

Syntaxen ser ut så här:

to_char(timestamp, text)
to_char(interval, text)
to_char(int, text)
to_char(double precision, text)
to_char(numeric, text)

Där det första argumentet är värdet som ska konverteras (i någon av de listade datatyperna) och text är en formatsträng för att formatera det första argumentet.

Exempel

Här är ett exempel på hur du formaterar ett datumvärde:

SELECT to_char(date '2020-12-25', 'Day, DD Month YYYY');

Resultat:

Friday , 25 December 2020

I det här fallet formatsträngen Day, DD Month YYYY bestämmer hur datumet formateras när det returneras som en sträng av to_char() .

Mallmönster

Formatsträngen består av ett eller flera mallmönster .

I föregående exempel var min formatsträng Day, DD Month YYYY . Därför bestod den av följande mallmönster:

  • Day
  • DD
  • Month
  • YYYY

Jag kunde ha använt mer eller mindre mallmönster, och resultatet hade varit annorlunda.

Jag kunde till exempel ha gjort följande:

SELECT to_char(date '2020-12-25', 'Day');

Resultat:

Friday

Alternativt kunde min formatsträng ha bestått av en annan serie mallmönster helt och hållet.

Till exempel:

SELECT to_char(date '2020-12-25', 'Dy, DD Mon YY');

Resultat:

Fri, 25 Dec 20

Mallmönstermodifierare

Du kan också lägga till mallmönstermodifierare till din formatsträng.

Resultatet kommer att vara något annorlunda beroende på vilken modifierare som används.

Exempelvis presenterar följande exempel dagen i månaden som ett ordningsnummer.

SELECT to_char(date '2020-12-25', 'Day, DDth Month YYYY');

Resultat:

Friday , 25 December 2020

Detta är samma som det första exemplet men skillnaden är att jag lade till den th mallmodifierare som ett suffix till DD mall mönster. Detta lägger till ordningsnummersuffixet till dagen i månaden.

Därför hamnar vi på 25:e istället för bara 25 .

För att betona effekten av mallmodifieraren, så här ser den ut när den tillämpas på olika värden.

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";

Resultat:

  1   |  2   |  3   |  4   
------+------+------+------
 01st | 02nd | 03rd | 04th

Jag skulle kunna lägga till ytterligare en modifierare för att undertrycka de inledande nollorna om det behövs.

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";

Resultat:

  1  |  2  |  3  |  4  
-----+-----+-----+-----
 1st | 2nd | 3rd | 4th

I det här fallet lade jag till FM som är för "fyllningsläge". Denna modifierare undertrycker inledande nollor och utfyllnadsblanketter.

Numerisk

Det föregående exemplet kan också tillämpas på numeriska värden.

Men när du använder numeriska värden måste du byta D med antingen 9 eller 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";

Resultat:

  1   |  2   |  3   |  4   
------+------+------+------
  1st |  2nd |  3rd |  4th

Lista över mallmönster och modifierare

De faktiska mallmönster som du kan använda beror på om du formaterar ett datum-/tidsvärde eller ett tal.

För en fullständig lista över tillgängliga mallmönster, se:

  • Mallmönster och modifierare för formatering av datum/tid
  • Mallmönster och modifierare för numerisk formatering


  1. Inbäddade PostgreSQL för Java JUnit-tester

  2. Hur man får näst största eller tredje största posten från en tabell

  3. Rummets bästa sätt att skapa säkerhetskopior för offlineapplikationer?

  4. Hur kontrollerar jag om en begränsning finns i SQL-servern?