Problème :
Vous souhaitez afficher une valeur de date dans un autre format dans SQL Server.
Exemple :
Notre base de données a une table nommée company
avec des données dans les colonnes id (clé primaire), nom , et start_date .
identifiant | nom | date_début |
---|---|---|
1 | Banque Lisa | 2019-01-20 |
2 | Institut financier de crédit | 2018-03-14 |
3 | Williams Holding | 2019-10-28 |
Pour chaque entreprise, convertissons leur date de début dans un nouveau format, "AAAA/MM/JJ", où AAAA est une année à 4 chiffres, MM est un mois à 2 chiffres et JJ est un jour à 2 chiffres.
Solution 1 :
Nous utiliserons le CONVERT()
une fonction. Voici la requête que vous écririez :
SELECT CONVERT(NVARCHAR, start_date, 111 ) AS new_date FROM company;
Voici le résultat :
nom | date_début |
---|---|
Banque Lisa | 2019/01/20 |
Institut financier de crédit | 2018/03/14 |
Williams Holding | 2019/10/28 |
Discussion :
Utilisez le CONVERT()
fonction pour changer le format d'une date à partir d'une colonne ou d'une expression donnée.
Cette fonction prend trois arguments :
- Le nouveau type de données (dans notre exemple, NVARCHAR).
- Une expression ou un nom de colonne contenant la date à formater (dans notre exemple, le
start_date
colonne). - Un code de style facultatif, sous forme d'entier. (Dans notre exemple, le style "111" affiche la date en utilisant des barres obliques pour séparer les parties.)
Le tableau ci-dessous présente les codes de style de date les plus populaires :
code | description |
---|---|
101 | 30/11/2019 |
102 | 2019.11.30 |
103 | 30/11/2019 |
104 | 30.11.2019 |
105 | 30-11-2019 |
110 | 30-11-2019 |
111 | 2019/11/30 |
Une liste complète des styles de format peut être trouvée dans la documentation T-SQL.
La requête ci-dessus a changé le format de la date de Lisa Bank 2019-01-20 en une chaîne contenant la date « 2019/01/20 ».
Solution 2 :
Dans SQL Server 2012 et versions ultérieures, vous pouvez utiliser le FORMAT()
fonction pour changer les formats de date/heure. Vous utilisez les caractères ci-dessous pour spécifier le format souhaité :
motif | description |
---|---|
jj | jour dans la plage 01-31 |
MM | mois dans la plage 01-12 |
aa | Année à 2 chiffres |
aaaa | Année à 4 chiffres |
HH | heure dans la plage 00-23 |
mm | minutes dans la plage 00-59 |
ss | secondes dans la plage 00-59 |
Voici la requête que vous écririez en utilisant FORMAT() :
SELECT FORMAT(start_date, ‘yyyy-MM-dd’ ) AS new_date FROM company;
Le premier argument est la valeur datetime/date/time à reformater. La seconde est une chaîne contenant le motif du nouveau format. Cette fonction renvoie un type de données NVARCHAR. Utilisez FORMAT()
si vous travaillez sur SQL Server 2012 ou version ultérieure et souhaitez convertir les dates/heures en chaînes contenant les dates/heures formatées.