SQL DAYOFWEEK()

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 /]
Partager