Можете да използвате DAYOFWEEK()
функция в MySQL за връщане на деня от седмицата от дата.
В този контекст връщана стойност от 1 съответства на неделя, 2 съответства на понеделник и т.н.
Тази статия съдържа примери за демонстрация.
Синтаксис
Синтаксисът е така:
DAYOFWEEK(date)
Където date
е стойността на датата, от която искате да се върне денят от седмицата.
Пример
Ето пример за демонстрация.
SELECT DAYOFWEEK('2019-01-01') AS 'Result';
Резултат:
+--------+ | Result | +--------+ | 3 | +--------+
Можем да изпълним това заедно с DAYNAME()
функция, за да видите на кой ден съответства:
SET @date = '2019-01-01'; SELECT @date, DAYNAME(@date) AS 'Day Name', DAYOFWEEK(@date) AS 'Day of Week';
Резултат:
+------------+----------+-------------+ | @date | Day Name | Day of Week | +------------+----------+-------------+ | 2019-01-01 | Tuesday | 3 | +------------+----------+-------------+
DAYOFWEEK() срещу DAYOFMONTH()
Ето пример за демонстриране на разликата между DAYOFWEEK()
и DAYOFMONTH()
функции.
SET @date = '2019-01-20'; SELECT @date, DAYNAME(@date) AS 'Day Name', DAYOFWEEK(@date) AS 'Day of Week', DAYOFMONTH(@date) AS 'Day of Month';
Резултат:
+------------+----------+-------------+--------------+ | @date | Day Name | Day of Week | Day of Month | +------------+----------+-------------+--------------+ | 2019-01-20 | Sunday | 1 | 20 | +------------+----------+-------------+--------------+
DAYOFMONTH()
функцията връща стойност между 1 и 31 (или 0 за дати с част от нулев ден), което представлява деня от месеца. Връща се обратно на 1 в началото на всеки месец.
DAYOFWEEK()
функцията от друга страна връща стойност между 1 и 7 . Връща се обратно на 1 в началото на всяка седмица.
Пример за база данни
Тук правим нещо подобно на предишните примери, с изключение на това, че този пример използва данни от база данни:
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;
Резултат:
+---------------------+-----------+-------------+ | Date/Time | Day Name | Day of Week | +---------------------+-----------+-------------+ | 2005-05-25 11:30:37 | Wednesday | 4 | +---------------------+-----------+-------------+
Текуща дата/час
Ето пример за извличане на частта от деня от текущата дата и час (които се връщат с помощта на NOW()
функция).
SELECT NOW(), DAYOFWEEK(NOW());
Резултат:
+---------------------+------------------+ | NOW() | DAYOFWEEK(NOW()) | +---------------------+------------------+ | 2018-06-26 07:42:31 | 3 | +---------------------+------------------+
Друг начин да направите това е да използвате CURDATE()
функция, която връща само датата (но не и часа).
SELECT CURDATE(), DAYOFWEEK(CURDATE());
Резултат:
+------------+----------------------+ | CURDATE() | DAYOFWEEK(CURDATE()) | +------------+----------------------+ | 2018-06-26 | 3 | +------------+----------------------+