Problème :
Vous souhaitez modifier le format d'un champ ou d'une valeur de date dans une base de données SQL Server.
Exemple :
Notre base de données a une table nommée Patient
avec des données dans les colonnes Id
, FirstName
, LastName
, et RegistrationDate
.
Identifiant | Prénom | Nom | Date d'inscription |
---|---|---|---|
1 | Jeanne | Williams | 2019-06-20 |
2 | Gabriel | Marron | 2019-02-02 |
3 | Lora | Folk | 2016-11-05 |
Modifions le format de la date d'enregistrement de chaque patient. Nous mettrons le nom du jour de la semaine en premier, suivi du jour et du nom du mois et d'une année à 4 chiffres (par exemple "vendredi 27 décembre 2019").
Solution :
Nous allons utiliser la fonction FORMAT() pour changer le format de la date dans le RegistrationDate
colonne.
SELECT FirstName, LastName, FORMAT(RegistrationDate ,'dddd, d MMMM, yyyy') AS FormattedRegistrationDate FROM Patient;
Voici le résultat de la requête :
Prénom | Nom | Date d'enregistrement formatée |
---|---|---|
Jeanne | Williams | Jeudi 20 juin 2019 |
Gabriel | Marron | Samedi 2 février 2019 |
Lora | Folk | Samedi 5 novembre 2016 |
Discussion :
Nous pouvons modifier l'affichage d'une date donnée avec la fonction FORMAT(). Cette fonction prend deux arguments obligatoires et un argument facultatif. Dans notre exemple, nous n'avons utilisé que les deux arguments obligatoires. La première est une date, qui peut provenir d'une colonne date/heure/dateheure ou de toute expression renvoyant une date ou une heure. (Dans notre exemple, nous utilisons la colonne RegistrationDate
.) Le deuxième argument est une chaîne contenant le nouveau format de date. Dans notre exemple, nous avons utilisé 'dddd, dd MMMM, yyyy' :
- dddd – Le nom du jour de la semaine.
- d – Le jour du mois, de 1 à 31.
- MMMM – Le nom complet du mois.
- aaaa – L'année à quatre chiffres.
Le tableau ci-dessous présente d'autres spécificateurs de format de date/heure :
spécificateur | description |
---|---|
d | Jour dans la plage 1-31 |
jj | Jour dans la plage 01-31 |
ddd | Le nom abrégé du jour de la semaine |
dddd | Le nom complet du jour de la semaine |
M | Mois de 1 à 12 |
MM | Mois de 01 à 12 |
MMM | Le nom abrégé du mois |
MMMM | Le nom complet du mois |
y | Année à 2 chiffres, de 0 à 99 |
aa | Année à 2 chiffres de 00 à 99 |
aaaa | Année à 4 chiffres |
g | Epoque (par exemple A.D.) |
h | Heure de 1 à 12 (horloge de 12 heures) |
hh | Heure de 01 à 12 (horloge 12 heures) |
H | Heure de 0 à 23 (horloge 24 heures) |
HH | Heure de 00 à 23 (horloge 24 heures) |
m | Minute de 0 à 59 |
mm | Minute de 00 à 59 |
s | Seconde de 0 à 59 |
ss | Seconde de 00 à 59 |
t | Premier caractère AM ou PM (par exemple, 9A, 5P) |
tt | AM ou PM |
z | Décalage des heures, sans zéro non significatif (par exemple +3) |
zz | Décalage des heures, avec zéro non significatif (par exemple +03) |
Vous pouvez en savoir plus dans la documentation Microsoft sur les formats de date et d'heure standard et les formats personnalisés.
Si vous souhaitez formater cette date pour une langue et/ou un pays spécifique, utilisez le troisième argument facultatif :culture . Cet argument est une chaîne contenant le code culturel d'une région ou d'un pays particulier. (Les codes de culture sont composés d'un code de langue, d'un tiret et d'un code de pays.) Dans l'exemple ci-dessous, nous utilisons le code de culture pour l'Allemagne, qui combine le code de langue allemand ("de") avec le code de pays pour l'Allemagne ("DE"), c'est-à-dire "de-DE". La date résultante est affichée en allemand et formatée comme un public allemand s'attendrait à la voir.
SELECT FirstName, LastName, FORMAT(RegistrationDate ,'dddd, d MMMM, yyyy', 'de-DE') AS FormattedRegistrationDate FROM Patient;
Voici le résultat de cette requête :
Prénom | Nom | Date d'inscription |
---|---|---|
Jeanne | Williams | Donnerstag, 20 juin 2019 |
Gabriel | Marron | Samstag, 2 février 2019 |
Lora | Folk | Samstag, 5 novembre 2016 |