В MariaDB, DAYNAME()
е вградена функция за дата и час, която връща името на деня от седмицата за дадена дата.
Той приема един аргумент, който е датата, от която искате да извлечете името на деня.
Синтаксис
Синтаксисът е така:
DAYNAME(date)
Където date
е датата, от която да получите името на деня.
Пример
Ето един пример:
SELECT DAYNAME('2045-10-17');
Резултат:
<пред>+-----------------------+| DAYNAME('2045-10-17') |+-----------------------+| вторник |+-----------------------+Език
Езикът, използван за името на деня, се контролира от стойността на lc_time_names
системна променлива.
Ето пример, който показва как това се отразява на резултата:
SET lc_time_names = 'de_DE';
SELECT DAYNAME('2045-10-17');
Резултат:
<пред>+-----------------------+| DAYNAME('2045-10-17') |+-----------------------+| Диенстаг |+-----------------------+
И превключване обратно към en_US
, което е по подразбиране:
SET lc_time_names = 'en_US';
SELECT DAYNAME('2045-10-17');
Резултат:
<пред>+-----------------------+| DAYNAME('2045-10-17') |+-----------------------+| вторник |+-----------------------+Ето списък с локали, поддържани от MariaDB, и ето как да върнете свой собствен списък с налични локали.
Докато сме на това, ето публикация, която обяснява как да проверите стойността на вашите lc_time_names
системна променлива.
Стойности за дата и час
Работи и със стойности за дата и час:
SELECT DAYNAME('2030-01-25 10:30:45');
Резултат:
+--------------------------------+| DAYNAME('2030-01-25 10:30:45') |+--------------------------------+ | петък |+--------------------------------+
Нула дни
Наличието на нулев ден в датата връща null
:
SELECT DAYNAME('2030-00-00');
Резултат:
<пред>+-----------------------+| DAYNAME('2030-00-00') |+-----------------------+| NULL |+-----------------------+Числови дати
Възможно е също да предавате дати като число, стига да има смисъл като дата.
Пример
SELECT DAYNAME(20201108);
Резултат:
+------------------+| DAYNAME(20201108) |+------------------+| Неделя |+------------------+
Годините с две цифри са добри:
SELECT DAYNAME(201108);
Резултат:
+-----------------+| DAYNAME(201108) |+----------------+| Неделя |+-----------------+
Но трябва да има смисъл като среща. Ето какво се случва, ако увелича частта от месеца до невалиден месец:
SELECT DAYNAME(209908);
Резултат:
+-----------------+| ИМЕ НА ДЕН(209908) |+----------------+| NULL |++-----------------+
Други ограничители
Можете да използвате други разделители за датата. MariaDB е доста прощаваща, когато става въпрос за разделители на дати. Ето няколко валидни примера:
SELECT
DAYNAME('2027/08/19'),
DAYNAME('2027,08,19'),
DAYNAME('2027:08:19'),
DAYNAME('2027;08!19');
Резултат (с помощта на вертикален изход):
DAYNAME('2027/08/19'):ThursdayDAYNAME('2027,08,19'):ThursdayDAYNAME('2027:08:19'):ThursdayDAYNAME('2027;08!19'):Четвъртъкпредварително>Текуща дата
Можем да предадем
NOW()
като аргумент за дата, за да използвате текущата дата:SELECT NOW(), DAYNAME(NOW());
Резултат:
+---------------------+----------------+| СЕГА() | ИМЕ НА ДЕН(СЕГА()) |+---------------------+----------------+| 13.05.2021 13:29:10 | четвъртък |+---------------------+----------------+Невалидни аргументи
Когато се подаде невалиден аргумент,
DAYNAME()
връщаnull
:SELECT DAYNAME('Dang!');
Резултат:
+-----------------+| DAYNAME('Дан!') |+-----------------+| NULL |+------------------+Липсващ аргумент
Извикване на
DAYNAME()
с грешен брой аргументи или без подаване на аргументи, води до грешка:SELECT DAYNAME();
Резултат:
ГРЕШКА 1582 (42000):Неправилен брой на параметрите в извикването на естествената функция „DAYNAME“И още един пример:
SELECT DAYNAME('2030-01-25', '2045-05-08');
Резултат:
ГРЕШКА 1582 (42000):Неправилен брой на параметрите в извикването на естествената функция „DAYNAME“