Dans MariaDB, WEEKOFYEAR()
est une fonction de date et d'heure intégrée qui renvoie la semaine calendaire d'une date donnée sous la forme d'un nombre compris entre 1
à 53
.
C'est l'équivalent d'utiliser le WEEK()
fonctionne en mode 3, et donc son résultat est conforme à la norme ISO 8601:1988.
Il accepte un argument; la date à partir de laquelle vous souhaitez extraire la semaine.
Syntaxe
La syntaxe ressemble à ceci :
WEEKOFYEAR(date)
Où date
est l'expression de date à partir de laquelle obtenir la semaine calendaire.
Exemple
Voici un exemple :
SELECT WEEKOFYEAR('2030-01-01');
Résultat :
+-----------------------------------+| SEMAINEANNEE('2030-01-01') |+--------------------------+| 1 |+---------------------------+
C'est l'équivalent de faire ce qui suit :
SELECT WEEK('2030-01-01', 3);
Résultat :
+-----------------------+| SEMAINE('2030-01-01', 3) |+-----------------------+| 1 |+-----------------------+
Valeurs DateHeure
Le WEEKOFYEAR()
la fonction fonctionne également avec les valeurs datetime :
SELECT WEEKOFYEAR('2030-08-01 10:30:45');
Résultat :
+-----------------------------------+| SEMAINEANNEE('2030-08-01 10:30:45') |+--------------------------------- --+| 31 |+-----------------------------------+
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 WEEKOFYEAR(20301125);
Résultat :
+----------------------+| SEMAINEANNEE(20301125) |+----------------------+| 48 |+----------------------+
Ou même le suivant (qui utilise une année à deux chiffres) :
SELECT WEEKOFYEAR(301125);
Résultat :
+--------------------+| SEMAINEDEANNEE(301125) |+--------------------+| 48 |+--------------------+
Mais ça doit avoir un sens comme date. Voici ce qui se passe si j'augmente la partie jour à un jour non valide :
SELECT WEEKOFYEAR(20301135);
Résultat :
+----------------------+| SEMAINEANNEE(20301135) |+----------------------+| NULL |+----------------------+1 ligne dans l'ensemble, 1 avertissement (0.000 sec)
Il a renvoyé null
avec un avertissement.
Regardons l'avertissement :
SHOW WARNINGS;
Résultat :
+---------+------+---------------------------------- ---------+| Niveau | Codage | Message |+---------+------+------------------------------ --------+| Avertissement | 1292 | Valeur de date/heure incorrecte :'20301135' |+---------+------+------------------------ --------------+
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
WEEKOFYEAR('2030/06/25'),
WEEKOFYEAR('2030,06,25'),
WEEKOFYEAR('2030:06:25'),
WEEKOFYEAR('2030;06!25');
Résultat (en utilisant la sortie verticale) :
WEEKOFYEAR('2030/06/25') :26WEEKOFYEAR('2030,06,25') :26WEEKOFYEAR('2030:06:25') :26WEEKOFYEAR('2030;06!25') :26Date actuelle
Nous pouvons passer
NOW()
comme argument datetime pour utiliser la date actuelle :SELECT NOW(), WEEKOFYEAR(NOW());
Résultat :
+---------------------+-----------------------+| MAINTENANT() | SEMAINEANNEE(MAINTENANT()) |+---------------------+-------------------+ | 2021-05-17 09:42:13 | 20 |+---------------------+--------------+Arguments invalides
Lorsqu'un argument invalide est passé,
WEEKOFYEAR()
renvoienull
:SELECT WEEKOFYEAR('2030-65-78');
Résultat :
+-----------------------------------+| SEMAINEANNEE('2030-65-78') |+--------------------------+| NULL |+---------------------+1 ligne dans l'ensemble, 1 avertissement (0.000 sec)Montrons l'avertissement :
SHOW WARNINGS;
Résultat :
+---------+------+---------------------------------- -----------+| Niveau | Codage | Message |+---------+------+------------------------------ ----------+| Avertissement | 1292 | Valeur datetime incorrecte :'2030-65-78' |+---------+------+-------------------- --------------------+Argument manquant
Appel de
WEEKOFYEAR()
avec le mauvais nombre d'arguments, ou sans passer d'arguments, génère une erreur :SELECT WEEKOFYEAR();
Résultat :
ERREUR 1582 (42000) :Nombre de paramètres incorrect dans l'appel à la fonction native 'WEEKOFYEAR'Et un autre exemple :
SELECT WEEKOFYEAR('2030-12-10', 1);
Résultat :
ERREUR 1582 (42000) :Nombre de paramètres incorrect dans l'appel à la fonction native 'WEEKOFYEAR'