Database
 sql >> Base de données >  >> RDS >> Database

Comment modifier les formats de date et d'heure dans T-SQL

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