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