PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come to_char() funziona in PostgreSQL

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:

1 | 2 | 3 | 4 ------+------+------+------ 01 | 02 | 03 | 04

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:

1 | 2 | 3 | 4 -----+-----+-----+----- 1° | 2° | 3 | 4°

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:

1 | 2 | 3 | 4 ------+------+------+------ 1° | 2° | 3 | 4°

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