Поиск по этому блогу

среда, 18 апреля 2012 г.

MySQL - определение высокосного года

Иногда необходимо узнать высокосный ли год при выборке с БД без понятия кому оно нужно, мне в каких-то тестах попалось. Итак , вооружатся будем базой данных MySQL - на других может отличатся синтаксис конкатенации строк (скажем в ProstgreSQL она осуществляется с помощью "||" - две вертикальные черты).

Собственно, сам код:
SELECT MONTH( CONCAT(YEAR("2011-05-13"), "-02-29") );
Разберем полученый код и его идею:
YEAR() -функция возвращающая год из даты
CONCAT() - функция для конкатенации строк в MySQL
MONTH() - функция возвращающая номер месяца из даты
Идея состоит в том что в 29 февраля (хххх-02-29)  присутствует только в высокосном году и том что функция MONTH() возвращает NULL если дата не существует.
Как применять:
SELECT *, CASE WHEN MONTH( CONCAT(YEAR(date_field), "-02-29") ) = 2 THEN 366 ELSE 365 END AS dayscount
FROM foo_table;

Комментариев нет:

Отправить комментарий