В MariaDB, DAYOFWEEK()
е вградена функция за дата и час, която връща деня от седмицата от дадена дата.
Той приема един аргумент, който е датата, от която искате да извлечете деня от седмицата.
Връща деня като число. Номерирането на индекса се придържа към стандарта ODBC (1
=Неделя, 2
=понеделник и т.н.). Това е в контраст с WEEKDAY()
, където 0
=Понеделник, 1
=вторник и т.н.
Синтаксис
Синтаксисът е така:
DAYOFWEEK(date)
Където date
е датата, от която да получите деня.
Пример
Ето един пример:
SELECT DAYOFWEEK('2030-01-25');
Резултат:
+------------------------+| DAYOFWEEK('2030-01-25') |+-------------------------+| 6 |+-------------------+
В сравнение с името на деня
Ето още един, наред с DAYNAME()
за да върнете името на деня:
SELECT
DAYOFWEEK('2030-01-20'),
DAYNAME('2030-01-20');
Резултат:
+-------------------+-------------------- ---+| DAYOFWEEK('2030-01-20') | DAYNAME('2030-01-20') |+-------------------------+------------ -----------+| 1 | неделя |+------------------------+--------------------- --+
Както споменахме, номерирането на индекса започва от 1 за неделя.
Ето събота:
SELECT
DAYOFWEEK('2030-01-19'),
DAYNAME('2030-01-19');
Резултат:
+-------------------+-------------------- ---+| DAYOFWEEK('2030-01-19') | DAYNAME('2030-01-19') |+-------------------------+------------ -----------+| 7 | събота |+------------------------+--------------------- --+
Стойности за дата и час
Работи и със стойности за дата и час:
SELECT DAYOFWEEK('2030-01-24 10:30:45');
Резултат:
+---------------------------------+| DAYOFWEEK('2030-01-24 10:30:45') |+-------------------------------- -+| 5 |+---------------------------------+
Нула дни
Нула дни водят до null
.
Пример:
SELECT DAYOFWEEK('2030-00-00');
Резултат:
+------------------------+| DAYOFWEEK('2030-00-00') |+-------------------------+| NULL |+------------------------+
Числови дати
Възможно е също да предавате дати като число, стига да има смисъл като дата.
Пример
SELECT DAYOFWEEK(20300125);
Резултат:
+---------------------+| ДНЕВНА СЕДМИЦА(20300125) |+---------------------+| 6 |+---------------------+
Или дори следното (което използва двуцифрена година):
SELECT DAYOFWEEK(300125);
Резултат:
+------------------+| ДНЕВНА СЕДМИЦА(300125) |+-------------------+| 6 |+-------------------+
Но трябва да има смисъл като среща. Ето какво се случва, ако увелича частта от деня до невалиден ден:
SELECT DAYOFWEEK(20300135);
Резултат:
+---------------------+| ДЕН СЕДМИЦА(20300135) |+---------------------+| NULL |+---------------------+
Други ограничители
Можете да използвате други разделители за датата. MariaDB е доста прощаваща, когато става въпрос за разделители на дати. Ето няколко валидни примера:
SELECT
DAYOFWEEK('2030/01/25'),
DAYOFWEEK('2030,01,25'),
DAYOFWEEK('2030:01:25'),
DAYOFWEEK('2030;01!25');
Резултат (с помощта на вертикален изход):
DAYOFWEEK('2030/01/25'):6DAYOFWEEK('2030,01,25'):6DAYOFWEEK('2030:01:25'):6DAYOFWEEK('2030;01!25'):6предварително>Текуща дата
Можем да предадем
NOW()
като аргумент за дата, за да използвате текущата дата:SELECT NOW(), DAYOFWEEK(NOW());
Резултат:
+---------------------+----------------+| СЕГА() | ДЕН СЕДМИЦА(СЕГА()) |+---------------------+------------------+| 2021-05-15 09:17:44 | 7 |+---------------------+----------------+Невалидни аргументи
Когато се подаде невалиден аргумент,
DAYOFWEEK()
връщаnull
:SELECT DAYOFWEEK('Homer');
Резултат:
+-------------------+| DAYOFWEEK('Homer') |+-------------------+| NULL |+-------------------+Липсващ аргумент
Извикване на
DAYOFWEEK()
с грешен брой аргументи или без подаване на аргументи, води до грешка:SELECT DAYOFWEEK();
Резултат:
ГРЕШКА 1582 (42000):Неправилен брой на параметрите в извикването на естествената функция „DAYOFWEEK“И още един пример:
SELECT DAYOFWEEK('2030-01-25', '2045-05-08');
Резултат:
ГРЕШКА 1582 (42000):Неправилен брой на параметрите в извикването на естествената функция „DAYOFWEEK“