Můžete použít DAYOFWEEK()
funkci v MySQL vrátit den v týdnu z data.
V tomto kontextu návratová hodnota 1 odpovídá neděli 2 odpovídá pondělí atd.
Tento článek obsahuje příklady k demonstraci.
Syntaxe
Syntaxe vypadá takto:
DAYOFWEEK(date)
Kde date
je hodnota data, ze které chcete vrátit den v týdnu.
Příklad
Zde je příklad k demonstraci.
SELECT DAYOFWEEK('2019-01-01') AS 'Result';
Výsledek:
+--------+ | Result | +--------+ | 3 | +--------+
Můžeme to spustit spolu s DAYNAME()
funkce, abyste viděli, kterému dni odpovídá:
SET @date = '2019-01-01'; SELECT @date, DAYNAME(@date) AS 'Day Name', DAYOFWEEK(@date) AS 'Day of Week';
Výsledek:
+------------+----------+-------------+ | @date | Day Name | Day of Week | +------------+----------+-------------+ | 2019-01-01 | Tuesday | 3 | +------------+----------+-------------+
DAYOFWEEK() vs DAYOFMONTH()
Zde je příklad demonstrující rozdíl mezi DAYOFWEEK()
a DAYOFMONTH()
funkce.
SET @date = '2019-01-20'; SELECT @date, DAYNAME(@date) AS 'Day Name', DAYOFWEEK(@date) AS 'Day of Week', DAYOFMONTH(@date) AS 'Day of Month';
Výsledek:
+------------+----------+-------------+--------------+ | @date | Day Name | Day of Week | Day of Month | +------------+----------+-------------+--------------+ | 2019-01-20 | Sunday | 1 | 20 | +------------+----------+-------------+--------------+
DAYOFMONTH()
funkce vrací hodnotu mezi 1 a 31 (nebo 0 pro data s nulovou částí dne), která představuje den v měsíci. Obnoví se zpět na 1 na začátku každého měsíce.
DAYOFWEEK()
funkce na druhé straně vrací hodnotu mezi 1 a 7 . Obnoví se zpět na 1 na začátku každého týdne.
Příklad databáze
Zde uděláme podobnou věc jako v předchozích příkladech s tím rozdílem, že tento příklad používá data z databáze:
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;
Výsledek:
+---------------------+-----------+-------------+ | Date/Time | Day Name | Day of Week | +---------------------+-----------+-------------+ | 2005-05-25 11:30:37 | Wednesday | 4 | +---------------------+-----------+-------------+
Aktuální datum/čas
Zde je příklad extrahování části dne z aktuálního data a času (který je vrácen pomocí NOW()
funkce).
SELECT NOW(), DAYOFWEEK(NOW());
Výsledek:
+---------------------+------------------+ | NOW() | DAYOFWEEK(NOW()) | +---------------------+------------------+ | 2018-06-26 07:42:31 | 3 | +---------------------+------------------+
Dalším způsobem, jak toho dosáhnout, je použít CURDATE()
funkce, která vrací pouze datum (ale ne čas).
SELECT CURDATE(), DAYOFWEEK(CURDATE());
Výsledek:
+------------+----------------------+ | CURDATE() | DAYOFWEEK(CURDATE()) | +------------+----------------------+ | 2018-06-26 | 3 | +------------+----------------------+