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

Come formattare una data in T-SQL

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:

  1. Il nuovo tipo di dati (nel nostro esempio, NVARCHAR).
  2. Un'espressione o un nome di colonna contenente la data da formattare (nel nostro esempio, la start_date colonna).
  3. 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.