Dans MariaDB, WEEKDAY() est une fonction de date et d'heure intégrée qui renvoie le jour de la semaine à partir d'une date donnée.
Il accepte un argument, qui est la date à partir de laquelle vous souhaitez extraire le jour de la semaine.
Il renvoie le jour sous forme de nombre. La numérotation de l'index commence à zéro pour le lundi (c'est-à-dire 0 =Lundi, 1 =mardi, etc.). Ceci est en contraste avec DAYOFWEEK() , qui respecte la norme ODBC (1 =dimanche, 2 =lundi, etc.).
Syntaxe
La syntaxe ressemble à ceci :
WEEKDAY(date)
Où date est la date à partir de laquelle obtenir le jour de la semaine.
Exemple
Voici un exemple :
SELECT WEEKDAY('2030-01-25'); Résultat :
+-----------------------+| JOURSEM('2030-01-25') |+-----------------------+| 4 |+-----------------------+ Par rapport au nom du jour
En voici un autre, à côté de DAYNAME() pour renvoyer le nom du jour :
SELECT
WEEKDAY('2030-01-21'),
DAYNAME('2030-01-21'); Résultat :
+-----------------------+---------------------- -+| JOUR DE SEMAINE('2030-01-21') | NOMJOUR('2030-01-21') |+----------------------+----------------------- ---------+| 0 | Lundi |+-----------------------+----------------------- + Comme mentionné, la numérotation de l'index commence à 0 pour le lundi.
Voici dimanche :
SELECT
WEEKDAY('2030-01-20'),
DAYNAME('2030-01-20'); Résultat :
+-----------------------+---------------------- -+| JOUR DE SEMAINE('2030-01-20') | NOMJOUR('2030-01-20') |+-----------------------+----------------------- ---------+| 6 | Dimanche |+-----------------------+----------------------- + Valeurs DateHeure
Cela fonctionne également avec les valeurs datetime :
SELECT WEEKDAY('2030-01-24 10:30:45'); Résultat :
+---------------------------------------------+| JOURSEM('2030-01-24 10:30:45') |+--------------------------------+ | 3 |+--------------------------------+ Zéro jour
Zéro jour donne null .
Exemple :
SELECT WEEKDAY('2030-00-00'); Résultat :
+-----------------------+| JOURSEM('2030-00-00') |+-----------------------+| NULL |+-----------------------+ Dates numériques
Il est également possible de transmettre des dates sous forme de nombre, tant que cela a du sens en tant que date.
Exemple
SELECT WEEKDAY(20300125); Résultat :
+-------------------+| JOUR DE SEMAINE(20300125) |+------------------+| 4 |+-------------------+
Ou même le suivant (qui utilise une année à deux chiffres) :
SELECT WEEKDAY(300125); Résultat :
+-----------------+| JOURSEM (300125) |+-----------------+| 4 |+-----------------+
Mais ça doit avoir un sens comme date. Voici ce qui se passe si j'augmente la partie jour à un jour non valide :
SELECT WEEKDAY(20300135); Résultat :
+-------------------+| JOUR DE SEMAINE(20300135) |+------------------+| NULL |+-------------------+
Autres délimiteurs
Vous pouvez utiliser d'autres délimiteurs pour la date. MariaDB est assez indulgent en ce qui concerne les délimiteurs de dates. Voici quelques exemples valides :
SELECT
WEEKDAY('2030/01/25'),
WEEKDAY('2030,01,25'),
WEEKDAY('2030:01:25'),
WEEKDAY('2030;01!25'); Résultat (en utilisant la sortie verticale) :
JOUR DE LA SEMAINE('2030/01/25') :4JOUR DE LA SEMAINE('2030,01,25') :4JOUR DE LA SEMAINE('2030:01:25') :4JOUR DE LA SEMAINE('2030;01!25') :4 Date actuelle
Nous pouvons passer NOW() comme argument de date pour utiliser la date actuelle :
SELECT
NOW(),
WEEKDAY(NOW());
Résultat :
+---------------------+----------------+| MAINTENANT() | JOUR DE LA SEMAINE(MAINTENANT()) |+---------------------+----------------+| 2021-05-15 09:44:50 | 5 |+---------------------+----------------+
Arguments invalides
Lorsqu'un argument invalide est passé, WEEKDAY() renvoie null :
SELECT WEEKDAY('Homer');
Résultat :
+------------------+| JOURSEM('Homère') |+------------------+| NULL |+------------------+ Argument manquant
Appel WEEKDAY() avec le mauvais nombre d'arguments, ou sans passer d'arguments, génère une erreur :
SELECT WEEKDAY();
Résultat :
ERREUR 1582 (42000) :nombre de paramètres incorrect dans l'appel à la fonction native 'WEEKDAY'
Et un autre exemple :
SELECT WEEKDAY('2030-01-25', '2045-05-08');
Résultat :
ERREUR 1582 (42000) :nombre de paramètres incorrect dans l'appel à la fonction native 'WEEKDAY'