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 |