Du kan använda DAYOFWEEK()
funktion i MySQL för att returnera veckodagen från ett datum.
I detta sammanhang ett returvärde på 1 motsvarar söndag, 2 motsvarar måndag osv.
Den här artikeln innehåller exempel att visa.
Syntax
Syntaxen ser ut så här:
DAYOFWEEK(date)
Där date
är det datumvärde som du vill att veckodagen ska returneras från.
Exempel
Här är ett exempel att visa.
SELECT DAYOFWEEK('2019-01-01') AS 'Result';
Resultat:
+--------+ | Result | +--------+ | 3 | +--------+
Vi kan köra detta tillsammans med DAYNAME()
funktion för att se vilken dag det motsvarar:
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() kontra DAYOFMONTH()
Här är ett exempel för att visa skillnaden mellan DAYOFWEEK()
och 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 returnerar ett värde mellan 1 och 31 (eller 0 för datum med en nolldag del) som representerar dagen i månaden. Den återställs till 1 i början av varje månad.
DAYOFWEEK()
funktion å andra sidan, returnerar ett värde mellan 1 och 7 . Den återställs till 1 i början av varje vecka.
Ett databasexempel
Här gör vi en liknande sak som de tidigare exemplen, förutom att det här exemplet använder data från en databas:
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 | +---------------------+-----------+-------------+
Aktuellt datum/tid
Här är ett exempel på att extrahera dagdelen från det aktuella datumet och tiden (som returneras med NOW()
funktion).
SELECT NOW(), DAYOFWEEK(NOW());
Resultat:
+---------------------+------------------+ | NOW() | DAYOFWEEK(NOW()) | +---------------------+------------------+ | 2018-06-26 07:42:31 | 3 | +---------------------+------------------+
Ett annat sätt att göra detta är att använda CURDATE()
funktion, som endast returnerar datumet (men inte tiden).
SELECT CURDATE(), DAYOFWEEK(CURDATE());
Resultat:
+------------+----------------------+ | CURDATE() | DAYOFWEEK(CURDATE()) | +------------+----------------------+ | 2018-06-26 | 3 | +------------+----------------------+