В MariaDB, DAYOFYEAR()
е вградена функция за дата и час, която връща деня от годината от дадена дата.
Той приема един аргумент, който е датата, от която искате да извлечете деня от годината.
Връща деня като число в диапазона 1
до 366
.
Синтаксис
Синтаксисът е така:
DAYOFYEAR(date)
Където date
е датата, от която да получите деня от годината.
Пример
Ето един пример:
SELECT DAYOFYEAR('2030-12-25');
Резултат:
+------------------------+| DAYOFYEAR('2030-12-25') |+-------------------------+| 359 |+----------------------------------+
Стойности за дата и час
Работи и със стойности за дата и час:
SELECT DAYOFYEAR('2030-02-01 10:30:45');
Резултат:
+---------------------------------+| DAYOFYEAR('2030-02-01 10:30:45') |+-------------------------------- -+| 32 |+----------------------------------+
Нула дни
Нула дни водят до null
.
Пример:
SELECT DAYOFYEAR('2030-00-00');
Резултат:
+------------------------+| DAYOFYEAR('2030-00-00') |+-------------------------+| NULL |+------------------------+
Числови дати
Възможно е също да предавате дати като число, стига да има смисъл като дата.
Пример
SELECT DAYOFYEAR(20301125);
Резултат:
+---------------------+| ДЕН ГОДИНА(20301125) |+---------------------+| 329 |+---------------------+
Или дори следното (което използва двуцифрена година):
SELECT DAYOFYEAR(301125);
Резултат:
+------------------+| ДЕН ГОДИНА(301125) |+------------------+| 329 |+------------------+
Но трябва да има смисъл като среща. Ето какво се случва, ако увелича частта от деня до невалиден ден:
SELECT DAYOFYEAR(20300135);
Резултат:
+---------------------+| ДЕН ГОДИНА(20300135) |+---------------------+| NULL |+---------------------+
Други ограничители
Можете да използвате други разделители за датата. MariaDB е доста прощаваща, когато става въпрос за разделители на дати. Ето няколко валидни примера:
SELECT
DAYOFYEAR('2030/06/25'),
DAYOFYEAR('2030,06,25'),
DAYOFYEAR('2030:06:25'),
DAYOFYEAR('2030;06!25');
Резултат (с помощта на вертикален изход):
DAYOFYEAR('2030/06/25'):176DAYOFYEAR('2030,06,25'):176DAYOFYEAR('2030:06:25'):176DAYOFYEAR('2030;06!25'):176предварително>Текуща дата
Можем да предадем
NOW()
като аргумент за дата, за да използвате текущата дата:SELECT NOW(), DAYOFYEAR(NOW());
Резултат:
+---------------------+----------------+| СЕГА() | ДЕН ГОДИНА(СЕГА()) |+---------------------+------------------+| 2021-05-16 09:05:57 | 136 |+---------------------+-----------------+Невалидни аргументи
Когато се подаде невалиден аргумент,
DAYOFYEAR()
връщаnull
:SELECT DAYOFYEAR('Friday');
Резултат:
+---------------------+| DAYOFYEAR('петък') |+---------------------+| NULL |+---------------------+Липсващ аргумент
Извикване на
DAYOFYEAR()
с грешен брой аргументи или без подаване на аргументи, води до грешка:SELECT DAYOFYEAR();
Резултат:
ГРЕШКА 1582 (42000):Неправилен брой параметри в извикването на естествената функция „DAYOFYEAR“И още един пример:
SELECT DAYOFYEAR('2030-01-25', '2045-05-08');
Резултат:
ГРЕШКА 1582 (42000):Неправилен брой параметри в извикването на естествената функция „DAYOFYEAR“