Вывод даты из 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-коде, а также значительно облегчает переключение языков при отображении сайта с многоязычной поддержкой.
Просмотров: 9103 | Комментариев: 4
Метки: MySQL
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
Руслан
(23.03.2019 в 19:56):
Не помогло, всё равно на английском языке
Палыч.RU
(05.11.2015 в 19:56):
При установленной переменной lc_time_names
SET lc_time_names = 'ru_RU'
Как при этом будет работать команда
INSERT INTO TABLE_NAME (`date_field`) VALUES ('В каком формате здесь дата')
???
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
Лично для себя использую небльшую функцию PHP - http://pegas-studio.net/info/d...ussian_month
Добавить комментарий
Заполните форму для добавления комментария