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

Comment formater une date dans T-SQL

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 :

  1. Le nouveau type de données (dans notre exemple, NVARCHAR).
  2. Une expression ou un nom de colonne contenant la date à formater (dans notre exemple, le start_date colonne).
  3. 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.