Quando si eseguono query in MySQL, è possibile utilizzare DAYOFYEAR() funzione per restituire il giorno dell'anno da una data.
Questa funzione accetta un argomento e restituisce un valore compreso tra 1 e 366 , a seconda del giorno dell'anno rappresentato dalla parte del giorno dell'argomento.
Sintassi
La sintassi è questa:
DAYOFYEAR(date)
Dove date è il valore della data da cui vuoi restituire il giorno dell'anno.
Esempio
Ecco un esempio da dimostrare.
SELECT
DAYOFYEAR('2019-01-01') AS 'Date 1',
DAYOFYEAR('2019-12-31') AS 'Date 2';
Risultato:
+--------+--------+ | Date 1 | Date 2 | +--------+--------+ | 1 | 365 | +--------+--------+
In questo esempio, per dimostrare l'effetto corretto, eseguo questa funzione due volte in due date diverse:una all'inizio dell'anno e l'altra alla fine dell'anno.
DAYOFYEAR() vs DAYOFMONTH()
Ecco un esempio per dimostrare la differenza tra DAYOFYEAR() e DAYOFMONTH() funzioni.
SET @date = '2019-10-03';
SELECT
@date,
DAYOFMONTH(@date) AS 'Day of Month',
DAYOFYEAR(@date) AS 'Day of Year';
Risultato:
+------------+--------------+-------------+ | @date | Day of Month | Day of Year | +------------+--------------+-------------+ | 2019-10-03 | 3 | 276 | +------------+--------------+-------------+
Il DAYOFMONTH() la funzione restituisce un valore compreso tra 1 e 31 (o 0 per date con una parte zero day) che rappresenta il giorno del mese. Torna a 1 all'inizio di ogni mese.
Il DAYOFYEAR() funzione d'altra parte, restituisce un valore compreso tra 1 e 366 . Torna a 1 all'inizio di ogni anno.
Un esempio di database
Ecco un esempio di utilizzo di DAYOFYEAR() quando si interroga un database:
USE sakila; SELECT payment_date AS 'Date/Time', DAYOFYEAR(payment_date) AS 'Day of Year' FROM payment WHERE payment_id = 1;
Risultato:
+---------------------+-------------+ | Date/Time | Day of Year | +---------------------+-------------+ | 2005-05-25 11:30:37 | 145 | +---------------------+-------------+
Data/ora corrente
Ecco un esempio di estrazione della parte del giorno dalla data e dall'ora correnti (che viene restituita utilizzando NOW() funzione).
SELECT
NOW(),
DAYOFYEAR(NOW());
Risultato:
+---------------------+------------------+ | NOW() | DAYOFYEAR(NOW()) | +---------------------+------------------+ | 2018-06-26 08:23:04 | 177 | +---------------------+------------------+
Un altro modo per farlo è usare CURDATE() funzione, che restituisce solo la data (ma non l'ora).
SELECT
CURDATE(),
DAYOFYEAR(CURDATE());
Risultato:
+------------+----------------------+ | CURDATE() | DAYOFYEAR(CURDATE()) | +------------+----------------------+ | 2018-06-26 | 177 | +------------+----------------------+