MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Comment WEEKOFYEAR() fonctionne dans MariaDB

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) 

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') :26 

Date 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() renvoie null :

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'