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