Сортировка по месяцам, а не по дате

25 ноября 2011 1 комментарий
Задача: Есть таблица, со столбцом формата DATETIME, TIMESHTAMP или DATE. По умолчанию сортировка производится по дате. Т.е. год, месяц, дань, час, минута, секунда. Но, надо отсортировать значения например по месяцам. Как? Ответ: Как всегда все гениальное просто - сортировать можно не только по столбцам, но и по результатам обработки. В данном случае можно использовать функцию DATE_FORMAT
ORDER BY DATE_FORMAT(birthday,'%m%d') ASC
так же подойдут функции DAY, MONTH, YEAR
ORDER BY DAY(birthday) ASC, MONTH(birthday) ASC, YEAR(birthday) ASC
Примечание: Если использовать в функции DATE_FORMAT дополнительные символы для разделения значений:
ORDER BY DATE_FORMAT(birthday,'%m-%d') ASC
то сортировка будет производиться не правильно по строковому, а не числовому значению, что не всегда то, что нужно.