Когато изпълнявате заявки в MySQL, можете да използвате DAYOFYEAR()
функция за връщане на деня от годината от дата.
Тази функция приема един аргумент и връща стойност между 1 и 366 , в зависимост от това кой ден от годината представлява дневната част от аргумента.
Синтаксис
Синтаксисът е така:
DAYOFYEAR(дата)
Където date
е стойността на датата, от която искате да се върне деня от годината.
Пример
Ето пример за демонстрация.
ИЗБЕРЕТЕ DAYOFYEAR('2019-01-01') КАТО 'Дата 1', DAYOFYEAR('2019-12-31') КАТО 'Дата 2';
Резултат:
+--------+-------+| Дата 1 | Дата 2 |+--------+-------+| 1 | 365 |+--------+-------+
В този пример, за да демонстрирам правилния ефект, стартирам тази функция два пъти на две различни дати – едната в началото на годината, а другата в края на годината.
DAYOFYEAR() срещу DAYOFMONTH()
Ето пример за демонстриране на разликата между DAYOFYEAR()
и DAYOFMONTH()
функции.
ЗАДАДЕТЕ @date ='2019-10-03';ИЗБЕРЕТЕ @дата, DAYOFMONTH(@date) КАТО 'Ден от месеца', DAYOFYEAR(@date) КАТО 'Ден от годината';
Резултат:
+-----------+--------------+------------+| @дата | Ден от месеца | Ден от годината |+-----------+--------------+------------+| 2019-10-03 | 3 | 276 |+-----------+--------------+------------+
DAYOFMONTH()
функцията връща стойност между 1 и 31 (или 0 за дати с част от нулев ден), което представлява деня от месеца. Връща се обратно на 1 в началото на всеки месец.
DAYOFYEAR()
функцията от друга страна връща стойност между 1 и 366 . Връща се обратно на 1 в началото на всяка година.
Пример за база данни
Ето пример за използване на DAYOFYEAR()
при запитване към база данни:
ИЗПОЛЗВАЙТЕ sakila;ИЗБЕРЕТЕ pay_date КАТО 'Дата/час', DAYOFYEAR(payment_date) КАТО 'Ден от годината'FROM paymentWHERE payment_id =1;
Резултат:
<пред>+---------------------+------------+| Дата/Час | Ден от годината |+---------------------+------------+| 25.05.2005 11:30:37 | 145 |+---------------------+------------+Текуща дата/час
Ето пример за извличане на частта от деня от текущата дата и час (които се връщат с помощта на NOW()
функция).
ИЗБЕРЕТЕ СЕГА(), DAYOFYEAR(СЕГА());
Резултат:
+---------------------+----------------+| СЕГА() | ДЕН ГОДИНА(СЕГА()) |+---------------------+------------------+| 26.06.2018 08:23:04 | 177 |+---------------------+----------------+
Друг начин да направите това е да използвате CURDATE()
функция, която връща само датата (но не и часа).
ИЗБЕРЕТЕ CURDATE(), DAYOFYEAR(CURDATE());
Резултат:
<пред>+-----------+---------------------+| CURDATE() | ДЕН НА ГОДИНА(CURDATE()) |+-----------+---------------------+| 26.06.2018 | 177 |+-----------+---------------------+