Dans MariaDB, DAYOFYEAR()
est une fonction de date et d'heure intégrée qui renvoie le jour de l'année à partir d'une date donnée.
Il accepte un argument, qui est la date à partir de laquelle vous souhaitez extraire le jour de l'année.
Il renvoie le jour sous la forme d'un nombre dans la plage 1
à 366
.
Syntaxe
La syntaxe ressemble à ceci :
DAYOFYEAR(date)
Où date
est la date à partir de laquelle obtenir le jour de l'année.
Exemple
Voici un exemple :
SELECT DAYOFYEAR('2030-12-25');
Résultat :
+-------------------------+| JOURDEANNEE('2030-12-25') |+-------------------------+| 359 |+-------------------------+
Valeurs DateHeure
Cela fonctionne également avec les valeurs datetime :
SELECT DAYOFYEAR('2030-02-01 10:30:45');
Résultat :
+------------------------------------------------+| JOURDEANNEE('2030-02-01 10:30:45') |+--------------------------------- -+| 32 |+------------------------------------------------+
Zéro jour
Zéro jour donne null
.
Exemple :
SELECT DAYOFYEAR('2030-00-00');
Résultat :
+-------------------------+| JOURDEANNEE('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 DAYOFYEAR(20301125);
Résultat :
+---------------------+| JOURDEANNEE(20301125) |+---------------------+| 329 |+---------------------+
Ou même le suivant (qui utilise une année à deux chiffres) :
SELECT DAYOFYEAR(301125);
Résultat :
+-------------------+| JOURDEANNEE(301125) |+-------------------+| 329 |+------------------+
Mais ça doit avoir un sens comme date. Voici ce qui se passe si j'augmente la partie jour à un jour non valide :
SELECT DAYOFYEAR(20300135);
Résultat :
+---------------------+| JOURDEANNEE(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
DAYOFYEAR('2030/06/25'),
DAYOFYEAR('2030,06,25'),
DAYOFYEAR('2030:06:25'),
DAYOFYEAR('2030;06!25');
Résultat (en utilisant la sortie verticale) :
DAYOFYEAR('2030/06/25') :176DAYOFYEAR('2030,06,25') :176DAYOFYEAR('2030:06:25') :176DAYOFYEAR('2030;06!25') :176Date actuelle
Nous pouvons passer
NOW()
comme argument de date pour utiliser la date actuelle :SELECT NOW(), DAYOFYEAR(NOW());
Résultat :
+---------------------+------------------+| MAINTENANT() | DAYOFYEAR(MAINTENANT()) |+---------------------+------------------+| 2021-05-16 09:05:57 | 136 |+---------------------+-------------+Arguments invalides
Lorsqu'un argument invalide est passé,
DAYOFYEAR()
renvoienull
:SELECT DAYOFYEAR('Friday');
Résultat :
+---------------------+| DAYOFYEAR('Vendredi') |+---------------------+| NULL |+---------------------+Argument manquant
Appel de
DAYOFYEAR()
avec le mauvais nombre d'arguments, ou sans passer d'arguments, génère une erreur :SELECT DAYOFYEAR();
Résultat :
ERREUR 1582 (42000) :nombre de paramètres incorrect dans l'appel à la fonction native 'DAYOFYEAR'Et un autre exemple :
SELECT DAYOFYEAR('2030-01-25', '2045-05-08');
Résultat :
ERREUR 1582 (42000) :nombre de paramètres incorrect dans l'appel à la fonction native 'DAYOFYEAR'