При хранении даты в MySQL под типом Date (), она имеет формат 2011-07-11 (год-месяц-день). В некоторых случаях даже не имея разделителя 20110711.
Поскольку в русскоязычных странах более привычным к восприятию считается формат 11.07.2011 (день.месяц.год), то при выводе даты из базы данных, возникает необходимость в её преобразовании.
Преобразовать дату можно несколькими способами.
- при помощи php кода
- воспользовавшись командой DATE_FORMAT () при выборке из базы.
Первый способ применяется в тех случаях, когда необходимо вывести небольшое количество записей или же когда разработчик не подозревает о существовании второго способа.
Второй способ применим во всех случаях, вне зависимости сколько записей необходимо извлечь из базы, при этом он осуществляет минимальную нагрузку на сервер в отличии от способа с php кодом.
Рассмотрим пример выполнения:
Допустим существует таблица message, которая содержит ячейку send_data с датой в формате 2011-07-11.
Для извлечения и преобразования даты напишем следующий код:
$message = mysql_fetch_array(mysql_query("SELECT DATE_FORMAT(send_data, '%e.%m.%Y') FROM message"));
Далее в том месте где необходимо вывести преобразованную дату, выводим массив $message любой, удобной для вас командой:
echo $message['0'];
к примеру если в send_data находится 2011-05-03 то мы получим 03.05.2011.
Номер индекса в массиве $message указываем каким по счету начиная от 0, в команде SELECT извлекается необходимое значение с преобразованной датой. К примеру при запросе:
$message = mysql_fetch_array(mysql_query("SELECT title, text, DATE_FORMAT(send_data, '%e.%m.%Y') FROM message"));
вывод даты будет осуществляться с индексом 2:
echo $message['2'];
Преобразовать дату при помощи DATE_FORMAT () можно в любой вид и очередность при помощи подстановки ключей, полный список которых представлен в таблице.
Ключ | Описание |
%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’ |
%% | Литерал `%’. |