Vai al contenuto principale

FUNZIONE SQL FORMAT()

FORMAT() è una delle funzioni più usate in SQL. Scopri i suoi principali utilizzi in questo tutorial.
· 3 min leggi

Scopri con l'IA

L'output dei database raramente è pronto per un report. I prezzi tornano come 1234.5 invece di $1,234.50. Le date vengono visualizzate come 2023-02-01 04:05:06 quando vorresti qualcosa di più leggibile. 

La funzione FORMAT() di SQL può tornare utile. Converte numeri e date in testo formattato e offre un supporto discreto a valute diverse o a schemi personalizzati di vario tipo.

Questo tutorial spiega la sintassi e quattro casi d'uso comuni.

Che cos'è la funzione FORMAT()?

FORMAT() trasforma numeri o datetime in testo, applicando regole su come devono essere visualizzati.

Quando usare FORMAT() in SQL

FORMAT() è utile per visualizzare date, valute e valori numerici in un formato specifico. 

Sintassi di SQL FORMAT()

FORMAT(value, format[, culture])

Parametro

Che cos'è?

Value

Un parametro obbligatorio che fa riferimento alla colonna da formattare 

Format

Un parametro obbligatorio che specifica il pattern di formattazione del valore. Deve contenere una stringa di formato .NET. Mostreremo i vari formati consentiti negli esempi qui sotto

Culture

Un parametro opzionale che specifica la formattazione locale di data/ora.

Esempi di FORMAT()

Esempio 1: Formattare variabili numeriche

SELECT
   FORMAT(0112223333, ‘##-###-####') -- replace format with what is shown in the table below.
 

phone_number

0

11-222-3333

Esempio 2: Formattare datetime

Possiamo formattare una variabile di tipo datetime in formati diversi.

DECLARE @d DATETIME = CAST('2023-02-01 04:05:06' AS DATETIME);  

SELECT
   FORMAT(@d, format) -- replace format with what is shown in the table below.

Formato

Query

Esempio di data formattata per 1 febbraio 2023 04:05:06 AM

d

FORMAT(@d, ‘d')

2/1/2023

D

FORMAT(@d, D)

Wednesday, February 1, 2023

f

FORMAT(@d, ‘f')

Wednesday, February 1, 2023 4:05 AM

F

FORMAT(@d, ‘F')

Wednesday, February 1, 2023 4:05:06 AM

g

FORMAT(@d, ‘g')

10/8/2022 6:01 AM

G

FORMAT(@d, ‘G')

10/8/2022 6:01:06 AM

O

FORMAT(@d, ‘O')

2022-10-08T06:01:06.117Z

r

FORMAT(@d, ‘r')

Wed, 01 Feb 2023 04:05:06 GMT

R

FORMAT(@d, ‘R')

Wed, 01 Feb 2023 04:05:06 GMT

s

FORMAT(@d, ‘s')

2023-02-01T04:05:06

u

FORMAT(@d, ‘u')

2023-02-01 04:05:06Z

U

FORMAT(@d, ‘U')

Wednesday, February 1, 2023 4:05:06 AM

t

FORMAT(@d, ‘t')

4:05 AM

T

FORMAT(@d, ‘T')

4:05:06 AM

Y

FORMAT(@d, ‘Y')

February 2023

MM_dd_yyyy

FORMAT(@d, ‘MM_dd_yyyy')

02_01_2023

MMM-dd-yy

FORMAT(@d,'MMM-dd-yy')

Feb 01 23

yyyy-dd-MM

FORMAT(@d,'yyyy-dd-MM')

2023-01-02

yyyy-dd-MM hh.mm

FORMAT(@d,'yyyy-dd-MM hh.mm')

2023-01-02 04.05

yyyy-dd-MM hh.mm.ss

FORMAT(@d,'yyyy-dd-MM hh.mm.ss')

2023-01-02 04.05.06

yyyy-dd-MM hh.mm.ss tt

FORMAT(@d,'yyyy-dd-MM hh.mm.ss tt')

2023-01-02 04.05.06 AM

Esempio 3: Formattare date con impostazioni locali

Possiamo formattare le date in lingue diverse usando il parametro culture. 

DECLARE @d DATE = CAST('2023-02-01' AS DATE);  

SELECT
   FORMAT(@d, format, culture) -- replace format with what is shown in the table below.

Culture

Query

Esempio di data formattata per 1 febbraio 2023 

Inglese USA (en-US)

FORMAT(@d, 'd', 'en-US') 

2/1/2023

FORMAT(@d, 'f', 'en-US') 

Wednesday, February 1, 2023 12:00 AM

Inglese Gran Bretagna (en-gb)

FORMAT(@d, 'd', 'en-gb')

01/02/2023

FORMAT(@d, 'f', 'en-gb')

01 February 2023 00:00

Tedesco (de-de)

FORMAT(@d, 'd', 'de-de') 

01.02.2023

FORMAT(@d, 'f', 'de-de') 

Mittwoch, 1. Februar 2023 00:00

Cinese (zh-cn)

FORMAT(@d, 'd', 'zh-cn')

2023/2/1

FORMAT(@d, 'f', 'zh-cn')

2023年2月1日 0:00

Hindi (hi-in)

FORMAT(@d, 'd', ‘hi-in')

01-02-0203

FORMAT(@d, 'f', ‘hi-in')

01 फरवरी 2023 00:00

Russo (ru-ru)

FORMAT(@d, 'd', ru-ru') 

01-02-2023

FORMAT(@d, 'f', ru-ru') 

1 февраля 2023 г. 0:00

Spagna (gl-es)

FORMAT(@d, 'd', 'gl-es')

01/02/2023

FORMAT(@d, 'f', 'gl-es')

mércores 01 febreiro 2023 00:00

Esempio 4: Formattare valute

Possiamo anche formattare comodamente i valori numerici come valute.

SELECT
   FORMAT(amount, 'c', culture) -- replace format with what is shown in the table below.

Culture

Query

Esempio di valuta formattata

Inglese USA (en-US)

SELECT 

   FORMAT(5.5, 'c', 'en-US') 

$5.5

Inglese Gran Bretagna (en-gb)

SELECT 

   FORMAT(@d, 'c', 'en-gb')

£5.5

Tedesco (de-de)

SELECT 

   FORMAT(@d, 'c', 'de-de') 

5,50 €

Cinese (zh-cn)

SELECT 

   FORMAT(@d, 'c', 'zh-cn')

¥5.50

Hindi (hi-in)

SELECT 

   FORMAT(@d, 'c', ‘hi-in')

₹5.50

Russo (ru-ru)

SELECT 

   FORMAT(@d, 'c', ru-ru') 

5,50 ₽

Spagna (gl-es)

SELECT 

   FORMAT(@d, 'c', 'gl-es')

€5,50

Requisiti tecnici

FORMAT() funziona in SQL Server (a partire dal 2012) e in Azure SQL Database.  FORMAT() funziona anche in PostgreSQL, ma si comporta in modo diverso. Puoi saperne di più in questo corso.

Vedi anche

Approfondisci SQL

Conclusione

FORMAT() vale la pena di essere imparata perché trasforma una delle piccole seccature di SQL in una soluzione in una riga.

Una nota da tenere a mente: questa è sintassi per SQL Server e Azure SQL. PostgreSQL ha la propria funzione FORMAT(), ma si comporta in modo diverso — quindi verifica il tuo dialetto prima di fare affidamento su questi pattern.

Argomenti

Correlato