Formater une donnée temporelle
Lorsque l'on tombe sur quelqu'un qui a fait le (mauvais) choix de stocker ses dates sous forme de chaînes de caractères, et qu'on
lui demande les raisons de son choix, celle qui revient le plus souvent est qu'il ne veut pas afficher ses dates sous la forme
'AAAA-MM-JJ'. Donc il les stocke sous forme de CHAR ou VARCHAR 'JJ/MM/AAAA' par exemple, ou n'importe quel format
de son choix.
Malheureusement, en faisant ça, il se prive des nombreux avantages des formats temporels SQL (en particulier toutes les
fonctions que nous voyons dans cette partie), et cela pour rien, car SQL dispose de puissantes fonctions permettant de formater
une donnée temporelle.
C'est donc ce que nous allons voir dans ce chapitre.
Extraire une information précise
Commençons en douceur avec des fonctions permettant d'extraire une information d'une donnée temporelle. Par exemple, le jour
de la semaine, le nom du mois, l'année, etc.
Informations sur la date
Extraire la partie DATE
La fonction DATE(datetime) permet d'extraire la partie DATE d'une donnée de type DATETIME (ou DATE mais c'est moins
utile…).
Code : SQL
SELECT nom, date_naissance,
DATE(date_naissance) AS uniquementDate
FROM Animal
WHERE espece_id = 4;
nom
date_naissance
uniquementDate
Safran 2007-03-04 19:36:00 2007-03-04
Gingko 2008-02-20 02:50:00 2008-02-20
Bavard 2009-03-26 08:28:00 2009-03-26
Parlotte 2009-03-26 07:55:00 2009-03-26
Le jour
Les fonctions suivantes donnent des informations sur le jour :
DAY(date) ou DAYOFMONTH(date) : donne le jour du mois (sous forme de nombre entier de 1 à 31) ;
DAYOFWEEK(date) : donne l'index du jour de la semaine (nombre de 1 à 7 avec 1 = dimanche, 2 = lundi,…7 = samedi) ;
WEEKDAY(date) : donne aussi l'index du jour de la semaine, de manière un peu différente (nombre de 0 à 6 avec 0 =
lundi, 1 = mardi,…6 = dimanche) ;
DAYNAME(date) : donne le nom du jour de la semaine ;
DAYOFYEAR(date) : retourne le numéro du jour par rapport à l'année (de 1 à 366 donc).
Exemples :
Code : SQL
SELECT nom, DATE(date_naissance) AS date_naiss,
DAY(date_naissance) AS jour,
DAYOFMONTH(date_naissance) AS jour,
DAYOFWEEK(date_naissance) AS jour_sem,
WEEKDAY(date_naissance) AS jour_sem2,
DAYNAME(date_naissance) AS nom_jour,
DAYOFYEAR(date_naissance) AS jour_annee
FROM Animal
Partie 4 : Fonctions : manipuler les dates
198/414
www.openclassrooms.com
Précédent

- 198/413

Suivant