In Postgres, to_char()
è una funzione di formattazione del tipo di dati che converte il suo primo argomento in una stringa.
Il formato della stringa è determinato dal secondo argomento.
Il to_char()
la funzione può essere utilizzata per eseguire le seguenti conversioni:
- marcatura temporale alla stringa
- intervallo per stringa
- numero intero in stringa
- precisione reale/doppia su stringa
- da numero a stringa
Sintassi
La sintassi è questa:
to_char(timestamp, text)
to_char(interval, text)
to_char(int, text)
to_char(double precision, text)
to_char(numeric, text)
Dove il primo argomento è il valore da convertire (in uno qualsiasi dei tipi di dati elencati) e text
è una stringa di formato con cui formattare il primo argomento.
Esempio
Ecco un esempio di formattazione di un valore di data:
SELECT to_char(date '2020-12-25', 'Day, DD Month YYYY');
Risultato:
venerdì 25 dicembre 2020
In questo caso, la stringa di formato Day, DD Month YYYY
determina come viene formattata la data quando viene restituita come stringa da to_char()
.
Modelli di modello
La stringa di formato è costituita da uno o più pattern di modello .
Nell'esempio precedente, la mia stringa di formato era Day, DD Month YYYY
. Pertanto, consisteva nei seguenti modelli di modelli:
Day
DD
Month
YYYY
Avrei potuto utilizzare più o meno modelli di modelli e l'output sarebbe stato diverso.
Ad esempio, avrei potuto fare quanto segue:
SELECT to_char(date '2020-12-25', 'Day');
Risultato:
venerdì
In alternativa, la mia stringa di formato potrebbe essere composta da una serie diversa di modelli di modello del tutto.
Ad esempio:
SELECT to_char(date '2020-12-25', 'Dy, DD Mon YY');
Risultato:
ven, 25 dic 20
Modificatori del modello di modello
Puoi anche aggiungere modificatori del modello di modello alla tua stringa di formato.
Il risultato sarà leggermente diverso a seconda del modificatore utilizzato.
Ad esempio, l'esempio seguente presenta il giorno del mese come numero ordinale.
SELECT to_char(date '2020-12-25', 'Day, DDth Month YYYY');
Risultato:
venerdì 25 dicembre 2020
Questo è lo stesso del primo esempio, ma la differenza è che ho aggiunto il th
modificatore di modello come suffisso del DD
modello di modello. Aggiunge il suffisso del numero ordinale al giorno del mese.
Quindi finiamo con il 25 invece di soli 25 .
Per enfatizzare l'effetto del modificatore del modello, ecco come appare quando applicato a valori diversi.
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";
Risultato:
Potrei aggiungere un altro modificatore per sopprimere gli zeri iniziali, se necessario.
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";
Risultato:
In questo caso ho aggiunto FM
che è per "modalità riempimento". Questo modificatore sopprime gli zeri iniziali e gli spazi vuoti.
Numero
L'esempio precedente può essere applicato anche a valori numerici.
Tuttavia, quando utilizzi valori numerici, dovrai scambiare D
con 9
o 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";
Risultato:
Elenco di modelli e modificatori di modelli
I modelli di modello effettivi che puoi utilizzare dipendono dal fatto che tu stia formattando un valore di data/ora o un numero.
Per un elenco completo dei modelli di modelli disponibili, vedere:
- Modelli e modificatori di modelli per la formattazione di data/ora
- Modelli di modello e modificatori per la formattazione numerica