Du kan bruge DAYOFWEEK()
funktion i MySQL for at returnere ugedagen fra en dato.
I denne sammenhæng er en returværdi på 1 svarer til søndag, 2 svarer til mandag osv.
Denne artikel indeholder eksempler til demonstration.
Syntaks
Syntaksen ser sådan ud:
DAYOFWEEK(date)
Hvor date
er den datoværdi, som du vil have ugedagen returneret fra.
Eksempel
Her er et eksempel til at demonstrere.
SELECT DAYOFWEEK('2019-01-01') AS 'Result';
Resultat:
+--------+ | Result | +--------+ | 3 | +--------+
Vi kan køre dette sammen med DAYNAME()
funktion for at se, hvilken dag det svarer til:
SET @date = '2019-01-01'; SELECT @date, DAYNAME(@date) AS 'Day Name', DAYOFWEEK(@date) AS 'Day of Week';
Resultat:
+------------+----------+-------------+ | @date | Day Name | Day of Week | +------------+----------+-------------+ | 2019-01-01 | Tuesday | 3 | +------------+----------+-------------+
DAYOFWEEK() vs. DAYOFMONTH()
Her er et eksempel for at demonstrere forskellen mellem DAYOFWEEK()
og DAYOFMONTH()
funktioner.
SET @date = '2019-01-20'; SELECT @date, DAYNAME(@date) AS 'Day Name', DAYOFWEEK(@date) AS 'Day of Week', DAYOFMONTH(@date) AS 'Day of Month';
Resultat:
+------------+----------+-------------+--------------+ | @date | Day Name | Day of Week | Day of Month | +------------+----------+-------------+--------------+ | 2019-01-20 | Sunday | 1 | 20 | +------------+----------+-------------+--------------+
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.
DAYOFWEEK()
funktion returnerer på den anden side en værdi mellem 1 og 7 . Den nulstilles til 1 i starten af hver uge.
Et databaseeksempel
Her gør vi noget, der ligner de foregående eksempler, bortset fra at dette eksempel bruger data fra en database:
USE sakila; SELECT payment_date AS 'Date/Time', DAYNAME(payment_date) AS 'Day Name', DAYOFWEEK(payment_date) AS 'Day of Week' FROM payment WHERE payment_id = 1;
Resultat:
+---------------------+-----------+-------------+ | Date/Time | Day Name | Day of Week | +---------------------+-----------+-------------+ | 2005-05-25 11:30:37 | Wednesday | 4 | +---------------------+-----------+-------------+
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(), DAYOFWEEK(NOW());
Resultat:
+---------------------+------------------+ | NOW() | DAYOFWEEK(NOW()) | +---------------------+------------------+ | 2018-06-26 07:42:31 | 3 | +---------------------+------------------+
En anden måde at gøre dette på er at bruge CURDATE()
funktion, som kun returnerer datoen (men ikke klokkeslættet).
SELECT CURDATE(), DAYOFWEEK(CURDATE());
Resultat:
+------------+----------------------+ | CURDATE() | DAYOFWEEK(CURDATE()) | +------------+----------------------+ | 2018-06-26 | 3 | +------------+----------------------+