Problema:
Desideri visualizzare un valore di data in un altro formato in SQL Server.
Esempio:
Il nostro database ha una tabella denominata company
con i dati nelle colonne id (chiave primaria), nome e data_inizio .
id | data_inizio | |
---|---|---|
1 | Banca Lisa | 20-01-2019 |
2 | Istituto finanziario di credito | 14-03-2018 |
3 | Williams Holding | 28-10-2019 |
Per ciascuna azienda, convertiamo la data di inizio in un nuovo formato, "AAAA/MM/GG", dove AAAA è un anno a 4 cifre, MM è un mese a 2 cifre e GG è un giorno a 2 cifre.
Soluzione 1:
Useremo il CONVERT()
funzione. Ecco la domanda che scriveresti:
SELECT CONVERT(NVARCHAR, start_date, 111 ) AS new_date FROM company;
Ecco il risultato:
nome | data_inizio |
---|---|
Banca Lisa | 20/01/2019 |
Istituto finanziario di credito | 14/03/2018 |
Williams Holding | 28/10/2019 |
Discussione:
Usa CONVERT()
funzione per modificare il formato di una data da una determinata colonna o espressione.
Questa funzione accetta tre argomenti:
- Il nuovo tipo di dati (nel nostro esempio, NVARCHAR).
- Un'espressione o un nome di colonna contenente la data da formattare (nel nostro esempio, la
start_date
colonna). - Un codice di stile opzionale, come intero. (Nel nostro esempio, lo stile "111" mostra la data usando le barre per separare le parti.)
La tabella seguente presenta i codici di stile della data più popolari:
codice | descrizione |
---|---|
101 | 30/11/2019 |
102 | 30.11.2019 |
103 | 30/11/2019 |
104 | 30.11.2019 |
105 | 30-11-2019 |
110 | 30-11-2019 |
111 | 30/11/2019 |
Un elenco completo di stili di formato può essere trovato nella documentazione di T-SQL.
La query sopra ha modificato il formato della data di Lisa Bank 2019-01-20 in una stringa contenente la data "20/01/2019".
Soluzione 2:
In SQL Server 2012 e versioni successive, puoi utilizzare FORMAT()
funzione per modificare i formati di data/ora. Utilizzare i caratteri seguenti per specificare il formato desiderato:
modello | descrizione |
---|---|
dd | giorno nell'intervallo 01-31 |
MM | mese nell'intervallo 01-12 |
aa | Anno a 2 cifre |
aaaa | Anno a 4 cifre |
HH | ora nell'intervallo 00-23 |
mm | minuti nell'intervallo 00-59 |
ss | secondi nell'intervallo 00-59 |
Ecco la query che scriveresti usando FORMAT():
SELECT FORMAT(start_date, ‘yyyy-MM-dd’ ) AS new_date FROM company;
Il primo argomento è il valore datetime/date/time da riformattare. La seconda è una stringa contenente il pattern del nuovo formato. Questa funzione restituisce un tipo di dati NVARCHAR. Usa FORMAT()
se lavori su SQL Server 2012 o versioni successive e desideri convertire date/ora in stringhe contenenti date/ora formattate.