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 | +------------+----------------------+