Lors de l'exécution de requêtes dans MySQL, vous pouvez utiliser le DAYOFYEAR() fonction pour retourner le jour de l'année à partir d'une date.
Cette fonction accepte un argument et renvoie une valeur comprise entre 1 et 366 , selon le jour de l'année représenté par la partie jour de l'argument.
Syntaxe
La syntaxe ressemble à ceci :
DAYOFYEAR(date)
Où date est la valeur de date à partir de laquelle vous souhaitez renvoyer le jour de l'année.
Exemple
Voici un exemple pour illustrer.
SELECT
DAYOFYEAR('2019-01-01') AS 'Date 1',
DAYOFYEAR('2019-12-31') AS 'Date 2';
Résultat :
+--------+--------+ | Date 1 | Date 2 | +--------+--------+ | 1 | 365 | +--------+--------+
Dans cet exemple, afin de démontrer l'effet approprié, j'exécute cette fonction deux fois à deux dates différentes - l'une au début de l'année et l'autre à la fin de l'année.
DAYOFYEAR() contre DAYOFMONTH()
Voici un exemple pour démontrer la différence entre le DAYOFYEAR() et DAYOFMONTH() fonctions.
SET @date = '2019-10-03';
SELECT
@date,
DAYOFMONTH(@date) AS 'Day of Month',
DAYOFYEAR(@date) AS 'Day of Year';
Résultat :
+------------+--------------+-------------+ | @date | Day of Month | Day of Year | +------------+--------------+-------------+ | 2019-10-03 | 3 | 276 | +------------+--------------+-------------+
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 DAYOFYEAR() fonction d'autre part, renvoie une valeur entre 1 et 366 . Il se réinitialise à 1 au début de chaque année.
Un exemple de base de données
Voici un exemple d'utilisation de DAYOFYEAR() lors de l'interrogation d'une base de données :
USE sakila; SELECT payment_date AS 'Date/Time', DAYOFYEAR(payment_date) AS 'Day of Year' FROM payment WHERE payment_id = 1;
Résultat :
+---------------------+-------------+ | Date/Time | Day of Year | +---------------------+-------------+ | 2005-05-25 11:30:37 | 145 | +---------------------+-------------+
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(),
DAYOFYEAR(NOW());
Résultat :
+---------------------+------------------+ | NOW() | DAYOFYEAR(NOW()) | +---------------------+------------------+ | 2018-06-26 08:23:04 | 177 | +---------------------+------------------+
Une autre façon de faire est d'utiliser le CURDATE() fonction, qui renvoie uniquement la date (mais pas l'heure).
SELECT
CURDATE(),
DAYOFYEAR(CURDATE());
Résultat :
+------------+----------------------+ | CURDATE() | DAYOFYEAR(CURDATE()) | +------------+----------------------+ | 2018-06-26 | 177 | +------------+----------------------+