В 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“