sql >> Database >  >> RDS >> PostgreSQL

Hoe to_char() werkt in PostgreSQL

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


  1. SQLite COUNT

  2. Hoe te ontsnappen aan de apostrof (') in MySql?

  3. Retourneer de huidige aanmeldingsnaam in SQL Server (T-SQL)

  4. Problemen met contenttypes bij het laden van een fixture in Django