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

Come modificare i formati di data e ora in T-SQL

Problema:

Desideri modificare il formato di un campo data o di un valore in un database di SQL Server.

Esempio:

Il nostro database ha una tabella denominata Patient con i dati nelle colonne Id , FirstName , LastName e RegistrationDate .

Id Nome Cognome Data di registrazione
1 Gianna Williams 20-06-2019
2 Gabriele Marrone 2019-02-02
3 Lora Gente 05-11-2016

Cambiamo il formato della data di registrazione di ogni paziente. Metteremo per primo il nome del giorno della settimana, seguito dal giorno e dal nome del mese e da un anno a 4 cifre (ad es. "venerdì, 27 dicembre 2019").

Soluzione:

Useremo la funzione FORMAT() per cambiare il formato della data in RegistrationDate colonna.

SELECT  FirstName,
        LastName,
        FORMAT(RegistrationDate ,'dddd, d MMMM, yyyy')
          AS FormattedRegistrationDate
FROM Patient;

Ecco il risultato della query:

Nome Cognome Data di registrazione formattata
Jane Williams Giovedì 20 giugno 2019
Gabriele Marrone Sabato 2 febbraio 2019
Lora Gente Sabato 5 novembre 2016

Discussione:

Possiamo cambiare la modalità di visualizzazione di una data data con la funzione FORMAT(). Questa funzione accetta due argomenti obbligatori e un argomento facoltativo. Nel nostro esempio, abbiamo utilizzato solo i due argomenti obbligatori. La prima è una data, che può provenire da una colonna data/ora/dataora o da qualsiasi espressione che restituisca una data o un'ora. (Nel nostro esempio, utilizziamo la colonna RegistrationDate .) Il secondo argomento è una stringa contenente il nuovo formato della data. Nel nostro esempio, abbiamo utilizzato 'dddd, dd MMMM, yyyy' :

  • dddd – Il nome del giorno della settimana.
  • d – Il giorno del mese, da 1 a 31.
  • MMMM – Il nome completo del mese.
  • aaaa – L'anno a quattro cifre.

La tabella seguente presenta più identificatori di formato data/ora:

specificatore descrizione
d Giorno nell'intervallo 1-31
gg Giorno nell'intervallo 01-31
ddd Il nome abbreviato del giorno della settimana
dddd Il nome completo del giorno della settimana
M Mese da 1 a 12
MM Mese dalle 01 alle 12
MMM Il nome abbreviato del mese
MMMM Il nome completo del mese
y Anno a 2 cifre, da 0 a 99
aa Anno a 2 cifre da 00 a 99
aaaa Anno a 4 cifre
g Epoca (es. A.D.)
h Ora da 1 a 12 (formato 12 ore)
hh Ora dalle 01 alle 12 (formato 12 ore)
H Ora da 0 a 23 (formato 24 ore)
HH Ora dalle 00 alle 23 (formato 24 ore)
m Minuti da 0 a 59
mm Minuti da 00 a 59
s Secondo da 0 a 59
ss Secondo da 00 a 59
t Primo carattere di AM o PM (ad es. 9A, 5P)
tt AM o PM
z Offset delle ore, senza zero iniziale (es. +3)
zz Offset ore, con zero iniziale (es. +03)

Puoi saperne di più nella documentazione Microsoft per i formati di data e ora standard e formati personalizzati.

Se desideri formattare questa data per una lingua e/o un paese specifici, utilizza il terzo argomento facoltativo:cultura . Questo argomento è una stringa contenente il codice delle impostazioni cultura per una determinata regione o paese. (I codici cultura sono costituiti da un codice lingua, un trattino e un codice paese.) Nell'esempio seguente, utilizziamo il codice cultura per la Germania, che combina il codice della lingua tedesca ("de") con il codice del paese per la Germania ("DE"), ovvero "de-DE". La data risultante viene visualizzata in tedesco e formattata come si aspetterebbe di vederla un pubblico tedesco.

SELECT  FirstName,
        LastName,
        FORMAT(RegistrationDate ,'dddd, d MMMM, yyyy', 'de-DE')
          AS FormattedRegistrationDate
FROM Patient;

Ecco il risultato di questa query:

Nome Cognome Data di registrazione
Jane Williams Donnerstag, 20 giugno 2019
Gabriele Marrone Samstag, 2 febbraio 2019
Lora Gente Samstag, 5 novembre 2016