La fonction DAYOFWEEK() permet d’obtenir le jour de la semaine d’une date spécifique. Le résultat est un index numérique allant de 1 (Dimanche) à 7 (Samedi).
Détail des résultats possibles :
- 1 : Dimanche
- 2 : Lundi
- 3 : Mardi
- 4 : Mercredi
- 5 : Jeudi
- 6 : Vendredi
- 7 : Samedi
Syntaxe
La fonction s’utilise par exemple dans la liste des colonnes retournées afin de déterminer le jour de la semaine d’une date inscrite dans une colonne. La syntaxe suivante est possible :
SELECT DAYOFWEEK(colonne_date) FROM table
Dans cet exemple, le résultat sera une liste des jours de la semaine pour la date de “colonne_date”.
Exemple 1 : obtenir le jour de la semaine actuel
Un exemple très simple consiste à essayer d’obtenir le jour de la semaine du jour courant, à l’aide de la requête SQL suivante :
SELECT DAYOFWEEK(NOW());
Le résultat sera une valeur numérique comprise de 1 à 7.
Il est aussi possible d’obtenir le jour de la semaine d’une date précise, en utilisant une requête SQL similaire à l’exemple 1. Par exemple, pour connaitre le jour de la semaine du 15 septembre 2018, la requête SQL suivante est possible :
SELECT DAYOFWEEK('2018-09-15');
Résultat :
7
Le 15 septembre 2018 est un samedi (samedi = 7).
Exemple 2 : obtenir le jour de la semaine d’une date
Prenons l’exemple d’une table listant des utilisateurs, avec la date d’inscription pour chaque personne.
[table "165" not found /]Il est possible de déterminer le jour de la semaine de chacune des dates d’inscriptions, grâce à la requête SQL suivante :
SELECT *, DAYOFWEEK(date_inscription) AS jour_inscription FROM utilisateur
Résultats :
[table "166" not found /]Astuce : cette fonction est utile par exemple pour obtenir des statistiques du nombre d’utilisateurs inscrits en fonction du jour de la semaine. Une telle statistique sera possible grâce à la commande GROUP BY.
Exemple 3 : filtrer uniquement les lundi
Toujours à partir du même tableau, il est possible de filtrer les résultats pour obtenir uniquement les utilisateurs inscrits un lundi en utilisant la fonction DAYOFWEEK() dans la recherche avec WHERE, de la façon suivante :
SELECT * FROM utilisateur WHERE DAYOFWEEK(date_inscription) = 2
Résultats :
[table "167" not found /]