I Postgres, to_char()
er en datatypeformateringsfunktion, der konverterer sit første argument til en streng.
Formatet af strengen bestemmes af det andet argument.
to_char()
funktionen kan bruges til at udføre følgende konverteringer:
- tidsstempel til streng
- interval til streng
- heltal til streng
- ægte/dobbelt præcision til streng
- numerisk til streng
Syntaks
Syntaksen ser sådan ud:
to_char(timestamp, text)
to_char(interval, text)
to_char(int, text)
to_char(double precision, text)
to_char(numeric, text)
Hvor det første argument er værdien, der skal konverteres (i enhver af de angivne datatyper) og text
er en formatstreng, som det første argument skal formateres med.
Eksempel
Her er et eksempel på formatering af en datoværdi:
SELECT to_char(date '2020-12-25', 'Day, DD Month YYYY');
Resultat:
Friday , 25 December 2020
I dette tilfælde formatstrengen Day, DD Month YYYY
bestemmer, hvordan datoen formateres, når den returneres som en streng af to_char()
.
Skabelonmønstre
Formatstrengen består af et eller flere skabelonmønstre .
I det forrige eksempel var min formatstreng Day, DD Month YYYY
. Derfor bestod den af følgende skabelonmønstre:
Day
DD
Month
YYYY
Jeg kunne have brugt mere eller mindre skabelonmønstre, og outputtet ville have været anderledes.
For eksempel kunne jeg have gjort følgende:
SELECT to_char(date '2020-12-25', 'Day');
Resultat:
Friday
Alternativt kunne min formatstreng have bestået af en helt anden serie skabelonmønstre.
For eksempel:
SELECT to_char(date '2020-12-25', 'Dy, DD Mon YY');
Resultat:
Fri, 25 Dec 20
Skabelonmønstermodifikator
Du kan også tilføje skabelonmønstermodifikatorer til din formatstreng.
Resultatet vil være lidt anderledes afhængigt af den anvendte modifikator.
For eksempel præsenterer det følgende eksempel dagen i måneden som et ordenstal.
SELECT to_char(date '2020-12-25', 'Day, DDth Month YYYY');
Resultat:
Friday , 25 December 2020
Dette er det samme som det første eksempel, men forskellen er, at jeg tilføjede den th
skabelonmodifikator som et suffiks til DD
skabelon mønster. Dette føjer ordenstalssuffikset til dagen i måneden.
Derfor ender vi med 25. i stedet for kun 25 .
For at understrege effekten af skabelonmodifikatoren, se her, hvordan den ser ud, når den anvendes på forskellige værdier.
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
Jeg kunne tilføje en anden modifikator for at undertrykke de foranstillede nuller, hvis det kræves.
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 dette tilfælde tilføjede jeg FM
som er til "fill mode". Denne modifikator undertrykker indledende nuller og udfyldningsblanketter.
Numerisk
Det foregående eksempel kan også anvendes på numeriske værdier.
Men når du bruger numeriske værdier, skal du bytte D
med enten 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
Liste over skabelonmønstre og modifikatorer
De faktiske skabelonmønstre, du kan bruge, afhænger af, om du formaterer en dato/tidsværdi eller et tal.
For en komplet liste over tilgængelige skabelonmønstre, se:
- Skabelonmønstre og modifikatorer til formatering af dato/klokkeslæt
- Skabelonmønstre og modifikatorer til numerisk formatering