Vous pouvez utiliser le DAYOFWEEK() fonction dans MySQL pour renvoyer le jour de la semaine à partir d'une date.
Dans ce contexte, une valeur de retour de 1 correspond à dimanche, 2 correspond au lundi, etc.
Cet article contient des exemples à démontrer.
Syntaxe
La syntaxe ressemble à ceci :
DAYOFWEEK(date)
Où date est la valeur de date à partir de laquelle vous voulez que le jour de la semaine soit renvoyé.
Exemple
Voici un exemple pour illustrer.
SELECT DAYOFWEEK('2019-01-01') AS 'Result';
Résultat :
+--------+ | Result | +--------+ | 3 | +--------+
Nous pouvons exécuter ceci avec le DAYNAME() fonction pour voir à quel jour cela correspond :
SET @date = '2019-01-01';
SELECT
@date,
DAYNAME(@date) AS 'Day Name',
DAYOFWEEK(@date) AS 'Day of Week';
Résultat :
+------------+----------+-------------+ | @date | Day Name | Day of Week | +------------+----------+-------------+ | 2019-01-01 | Tuesday | 3 | +------------+----------+-------------+
DAYOFWEEK() contre DAYOFMONTH()
Voici un exemple pour démontrer la différence entre le DAYOFWEEK() et DAYOFMONTH() fonctions.
SET @date = '2019-01-20';
SELECT
@date,
DAYNAME(@date) AS 'Day Name',
DAYOFWEEK(@date) AS 'Day of Week',
DAYOFMONTH(@date) AS 'Day of Month';
Résultat :
+------------+----------+-------------+--------------+ | @date | Day Name | Day of Week | Day of Month | +------------+----------+-------------+--------------+ | 2019-01-20 | Sunday | 1 | 20 | +------------+----------+-------------+--------------+
Le DAYOFMONTH() la fonction renvoie une valeur entre 1 et 31 (ou 0 pour les dates avec une partie zéro jour) qui représente le jour du mois. Il se réinitialise à 1 au début de chaque mois.
Le DAYOFWEEK() fonction d'autre part, renvoie une valeur entre 1 et 7 . Il se réinitialise à 1 au début de chaque semaine.
Un exemple de base de données
Ici, nous faisons une chose similaire aux exemples précédents, sauf que cet exemple utilise des données d'une base de données :
USE sakila; SELECT payment_date AS 'Date/Time', DAYNAME(payment_date) AS 'Day Name', DAYOFWEEK(payment_date) AS 'Day of Week' FROM payment WHERE payment_id = 1;
Résultat :
+---------------------+-----------+-------------+ | Date/Time | Day Name | Day of Week | +---------------------+-----------+-------------+ | 2005-05-25 11:30:37 | Wednesday | 4 | +---------------------+-----------+-------------+
Date/heure actuelle
Voici un exemple d'extraction de la partie jour de la date et de l'heure actuelles (qui est renvoyée à l'aide de NOW() fonction).
SELECT
NOW(),
DAYOFWEEK(NOW());
Résultat :
+---------------------+------------------+ | NOW() | DAYOFWEEK(NOW()) | +---------------------+------------------+ | 2018-06-26 07:42:31 | 3 | +---------------------+------------------+
Une autre façon de faire est d'utiliser le CURDATE() fonction, qui renvoie uniquement la date (mais pas l'heure).
SELECT
CURDATE(),
DAYOFWEEK(CURDATE());
Résultat :
+------------+----------------------+ | CURDATE() | DAYOFWEEK(CURDATE()) | +------------+----------------------+ | 2018-06-26 | 3 | +------------+----------------------+