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 |