In Postgres, to_char()
is een opmaakfunctie van het gegevenstype die het eerste argument omzet in een tekenreeks.
Het formaat van de string wordt bepaald door het tweede argument.
De to_char()
functie kan worden gebruikt om de volgende conversies uit te voeren:
- tijdstempel om te stringen
- interval tot tekenreeks
- geheel getal naar tekenreeks
- echte/dubbele precisie naar string
- numeriek naar tekenreeks
Syntaxis
De syntaxis gaat als volgt:
to_char(timestamp, text)
to_char(interval, text)
to_char(int, text)
to_char(double precision, text)
to_char(numeric, text)
Waarbij het eerste argument de waarde is die moet worden geconverteerd (in een van de vermelde gegevenstypen) en text
is een format string waarmee het eerste argument opgemaakt moet worden.
Voorbeeld
Hier is een voorbeeld van het opmaken van een datumwaarde:
SELECT to_char(date '2020-12-25', 'Day, DD Month YYYY');
Resultaat:
Friday , 25 December 2020
In dit geval is de notatiereeks Day, DD Month YYYY
bepaalt hoe de datum wordt opgemaakt wanneer deze wordt geretourneerd als een tekenreeks door to_char()
.
Sjabloonpatronen
De opmaakreeks bestaat uit een of meer sjabloonpatronen .
In het vorige voorbeeld was mijn notatietekenreeks Day, DD Month YYYY
. Daarom bestond het uit de volgende sjabloonpatronen:
Day
DD
Month
YYYY
Ik had meer of minder sjabloonpatronen kunnen gebruiken en de uitvoer zou anders zijn geweest.
Ik had bijvoorbeeld het volgende kunnen doen:
SELECT to_char(date '2020-12-25', 'Day');
Resultaat:
Friday
Als alternatief had mijn opmaakreeks ook uit een andere reeks sjabloonpatronen kunnen bestaan.
Bijvoorbeeld:
SELECT to_char(date '2020-12-25', 'Dy, DD Mon YY');
Resultaat:
Fri, 25 Dec 20
Sjabloonpatroonmodificaties
U kunt ook sjabloonpatroonmodifiers toevoegen aan uw opmaaktekenreeks.
Het resultaat zal enigszins verschillen, afhankelijk van de gebruikte modifier.
In het volgende voorbeeld wordt bijvoorbeeld de dag van de maand weergegeven als een volgnummer.
SELECT to_char(date '2020-12-25', 'Day, DDth Month YYYY');
Resultaat:
Friday , 25 December 2020
Dit is hetzelfde als het eerste voorbeeld, maar het verschil is dat ik de th
. heb toegevoegd sjabloonmodifier als achtervoegsel voor de DD
sjabloon patroon. Dit voegt het achtervoegsel van het volgnummer toe aan de dag van de maand.
Daarom eindigen we met 25e in plaats van slechts 25 .
Om het effect van de sjabloonmodifier te benadrukken, ziet u er als volgt uit wanneer deze op verschillende waarden wordt toegepast.
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";
Resultaat:
1 | 2 | 3 | 4 ------+------+------+------ 01st | 02nd | 03rd | 04th
Ik zou indien nodig nog een modifier kunnen toevoegen om de voorloopnullen te onderdrukken.
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";
Resultaat:
1 | 2 | 3 | 4 -----+-----+-----+----- 1st | 2nd | 3rd | 4th
In dit geval heb ik FM
. toegevoegd wat voor "vulmodus" is. Deze modifier onderdrukt voorloopnullen en opvulspaties.
Numeriek
Het vorige voorbeeld kan ook worden toegepast op numerieke waarden.
Als u echter numerieke waarden gebruikt, moet u D
. verwisselen met ofwel 9
of 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";
Resultaat:
1 | 2 | 3 | 4 ------+------+------+------ 1st | 2nd | 3rd | 4th
Lijst met sjabloonpatronen en modificaties
Welke sjabloonpatronen u kunt gebruiken, hangt af van of u een datum-/tijdwaarde of een getal opmaakt.
Voor een volledige lijst met beschikbare sjabloonpatronen, zie:
- Sjabloonpatronen en modificaties voor datum-/tijdopmaak
- Sjabloonpatronen en modificaties voor numerieke opmaak