Blog. Just Blog

Вывод даты из MySQL на русском языке

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Web-мастеру и не только | Автор: ManHunter
Вывод даты из MySQL на русском языке
Вывод даты из MySQL на русском языке

В который раз убеждаюсь, насколько полезно перечитывать мануалы. Обычно на PHP для формирования строки типа "1 Января 2014, Среда" из даты, полученной из базы данных MySQL, приходилось колхозить массивы с названиями месяцев, дней недели и т.п. В MySQL 5.0.25 появилась динамическая переменная lc_time_names, которая отвечает за локаль дней недели, месяцев и сокращений от них. Ее действие распространяется на функции DATE_FORMAT, DAYNAME и MONTHNAME.

Чтобы названия стали отображаться на великом и могучем, сперва надо установить значение локали в переменной. Делается это следующим запросом:

SET lc_time_names = 'ru_RU'
Если у вас есть доступ к настройкам сервера MySQL, то можете прописать нужное значение переменной lc_time_names прямо в файле конфигурации my.ini. Теперь можно пробовать выполнить запрос к базе.

mysql> SELECT DATE_FORMAT(NOW(), '%W');
+--------------------------+
| DATE_FORMAT(NOW(), '%W') |
+--------------------------+
| Четверг                  |
+--------------------------+
1 row in set (0.00 sec)

mysql> SELECT CONCAT('Завтра ',
       DATE_FORMAT(ADDDATE(NOW(), 1), '%W')) AS `tomorrow`;
+----------------+
| tomorrow       |
+----------------+
| Завтра Пятница |
+----------------+
1 row in set (0.00 sec)

mysql> SELECT DAYNAME('2014-05-15'), MONTHNAME('2014-05-15');
+-----------------------+-------------------------+
| DAYNAME('2014-05-15') | MONTHNAME('2014-05-15') |
+-----------------------+-------------------------+
| Четверг               | Мая                     |
+-----------------------+-------------------------+
1 row in set (0.00 sec)

Все работает как надо. Такой способ позволяет избавиться от избыточных данных в PHP-коде, а также значительно облегчает переключение языков при отображении сайта с многоязычной поддержкой.

Поделиться ссылкой ВКонтакте Поделиться ссылкой на Facebook Поделиться ссылкой на LiveJournal Поделиться ссылкой в Мой Круг Добавить в Мой мир Добавить на ЛиРу (Liveinternet) Добавить в закладки Memori Добавить в закладки Google
Просмотров: 5597 | Комментариев: 3

Метки: MySQL
Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
Палыч.RU (05.11.2015 в 19:56):
При установленной переменной lc_time_names
SET lc_time_names = 'ru_RU'
Как при этом будет работать команда
INSERT INTO TABLE_NAME (`date_field`) VALUES ('В каком формате здесь дата')
???
ManHunter (25.09.2014 в 13:24):
Один из моих товарищей-программистов, который работал в банковской сфере и отвечал именно за базы данных, говорил примерно следующее: если какие-то расчеты можно переложить на базу данных, то надо именно так и сделать. Количество писанины в запросе увеличивается не намного, зато глобально избавляет от многих костылей в PHP.
Владимир (18.03.2014 в 18:10):
Весьма познавательно описано, честно признатся не знал, про этот способ вывода удобочитаемой даты. Но избавляясь от обработки даты методом PHP, вы добавляете довольно много кода непосредственно в сам запрос. Далеко не всегда это оправдано, да и зачастую просто неудобно.

Лично для себя использую небльшую функцию PHP - http://pegas-studio.net/info/d...ussian_month

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2017
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.08 сек. / MySQL: 2 (0.0038 сек.) / Память: 4.5 Mb
Наверх