MySQL: Преобразование даты с помощью DATE_FORMAT()
Даты хранятся в mysql в обратном порядке год-месяц-число(2008-10-18), иногда даже без разделителя(20081018). Чтобы вывести дату, нужно ее преобразовать в нормальный читаемый вид. Тут есть два способа преобразования, эффективный и не очень..
Даты хранятся в mysql в обратном порядке год-месяц-число(2008-10-18), иногда даже без разделителя(20081018). Чтобы вывести дату, нужно ее преобразовать в нормальный читаемый вид.
Тут есть два способа преобразования, эффективный и не очень. Не эффктивный способ это когда дату выводимую из mysql преобразуют с помощью php.
Сам лично так делал очень долгое время. Перед выводом на экран переворачивал каждую дату с помощью php функции.
Если количество преобразований не большое, то можно переворачивать дату и с помощью php, ничего плохого тут нет, но если нужно будет выдернуть десятки-сотни тысяч записей и в каждой преобразовать дату, то тут конечно намного быстрее будет преобразование дат с помощью mysql.
В mysql существует отличная функция DATE_FORMAT(), она очень похожа на php функцию date().
Вот пример использования SELECT DATE_FORMAT("2014-11-19",'%d.%m.%Y'); результат 19.11.2014
Все очень просто и быстро, нет необходимости изменять формат даты с помощью php.
Вот список определителей этой функции:
Определитель | Описание |
%M | Название месяца (январь...декабрь) |
%W | Название дня недели (воскресенье...суббота) |
%D | День месяца с английским суффиксом (0st, 1st, 2nd, 3rd и т.д.) |
%Y | Год, число, 4 разряда |
%y | Год, число, 2 разряда |
%X | Год для недели, где воскресенье считается первым днем недели, число, 4 разряда, используется с '%V' |
%x | Год для недели, где воскресенье считается первым днем недели, число, 4 разряда, используется с '%v' |
%a | Сокращенное наименование дня недели (Вс...Сб) |
%d | День месяца, число (00..31) |
%e | День месяца, число (0..31) |
%m | Месяц, число (00..12) |
%c | Месяц, число (0..12) |
%b | Сокращенное наименование месяца (Янв...Дек) |
%j | День года (001..366) |
%H | Час (00..23) |
%k | Час (0..23) |
%h | Час (01..12) |
%I | Час (01..12) |
%l | Час (1..12) |
%i | Минуты, число (00..59) |
%r | Время, 12-часовой формат (hh:mm:ss [AP]M) |
%T | Время, 24-часовой формат (hh:mm:ss) |
%S | Секунды (00..59) |
%s | Секунды (00..59) |
%p | AM или PM |
%w | День недели (0=воскресенье..6=суббота) |
%U | Неделя (00..53), где воскресенье считается первым днем недели |
%u | Неделя (00..53), где понедельник считается первым днем недели |
%V | Неделя (01..53), где воскресенье считается первым днем недели. Используется с `%X' |
%v | Неделя (01..53), где понедельник считается первым днем недели. Используется с `%x' |
%% | Литерал `%'. |
Примеры форматов: