Når du kører forespørgsler i MySQL, kan du bruge DAYOFYEAR() funktion for at returnere dagen i året fra en dato.
Denne funktion accepterer ét argument, og den returnerer en værdi mellem 1 og 366 , afhængigt af hvilken dag på året dagdelen af argumentet repræsenterer.
Syntaks
Syntaksen ser sådan ud:
DAYOFYEAR(date)
Hvor date er den datoværdi, som du vil have årets dag returneret fra.
Eksempel
Her er et eksempel til at demonstrere.
SELECT
DAYOFYEAR('2019-01-01') AS 'Date 1',
DAYOFYEAR('2019-12-31') AS 'Date 2';
Resultat:
+--------+--------+ | Date 1 | Date 2 | +--------+--------+ | 1 | 365 | +--------+--------+
I dette eksempel, for at demonstrere den korrekte effekt, kører jeg denne funktion to gange på to forskellige datoer – den ene i starten af året og den anden i slutningen af året.
DAYOFYEAR() vs. DAYOFMONTH()
Her er et eksempel for at demonstrere forskellen mellem DAYOFYEAR() og DAYOFMONTH() funktioner.
SET @date = '2019-10-03';
SELECT
@date,
DAYOFMONTH(@date) AS 'Day of Month',
DAYOFYEAR(@date) AS 'Day of Year';
Resultat:
+------------+--------------+-------------+ | @date | Day of Month | Day of Year | +------------+--------------+-------------+ | 2019-10-03 | 3 | 276 | +------------+--------------+-------------+
DAYOFMONTH() funktion returnerer en værdi mellem 1 og 31 (eller 0 for datoer med en dag på nul), der repræsenterer dagen i måneden. Den nulstilles til 1 i begyndelsen af hver måned.
DAYOFYEAR() funktion returnerer på den anden side en værdi mellem 1 og 366 . Den nulstilles til 1 i begyndelsen af hvert år.
Et databaseeksempel
Her er et eksempel på brug af DAYOFYEAR() når du forespørger i en database:
USE sakila; SELECT payment_date AS 'Date/Time', DAYOFYEAR(payment_date) AS 'Day of Year' FROM payment WHERE payment_id = 1;
Resultat:
+---------------------+-------------+ | Date/Time | Day of Year | +---------------------+-------------+ | 2005-05-25 11:30:37 | 145 | +---------------------+-------------+
Aktuel dato/klokkeslæt
Her er et eksempel på udtrækning af dagsdelen fra den aktuelle dato og klokkeslæt (som returneres ved hjælp af NOW() funktion).
SELECT
NOW(),
DAYOFYEAR(NOW());
Resultat:
+---------------------+------------------+ | NOW() | DAYOFYEAR(NOW()) | +---------------------+------------------+ | 2018-06-26 08:23:04 | 177 | +---------------------+------------------+
En anden måde at gøre dette på er at bruge CURDATE() funktion, som kun returnerer datoen (men ikke klokkeslættet).
SELECT
CURDATE(),
DAYOFYEAR(CURDATE());
Resultat:
+------------+----------------------+ | CURDATE() | DAYOFYEAR(CURDATE()) | +------------+----------------------+ | 2018-06-26 | 177 | +------------+----------------------+