Преобразование дат между форматами PHP и MySQL

Дата и время в MySQL поддерживается в формате ISO 8601. Время отображается практически интуитивно, но ISO 8601 требует указания года первым. Например, дата 18 марта 2011года может вводится как 2011-03-18 или 11-03-18. Даты, получаемые из MySQL, по умолчанию также представлены в этом формате.

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

При пересылке дат из PHP в MySQL их можно легко преобразовать в требуемый формат с помощью функции date(), как было показано ранее. Нужно лишь использовать версию числа и месяца с ведущими нулями, во избежание путаницы в MySQL.

Вы можете использовать представление года в виде двух цифр, однако представление в форме четырех цифр — обычно более хорошая идея. Если же преобразование необходимо выполнить в MySQL, то для этого существует две полезных функции: DATE_FORMAT() и UNIX_TIMASTAMP().

Функция DATE_FORMAT() работает аналогично подобной функции в PHP, но использует другие коды формата. Чаще всего она применяется для вывода даты в формате MM-ДД-ГГГГ (месяц/день/год) вместо естественного для MySQL ISO-формата ГГГГ-ММ-ДД (год/месяц.день). Для этого потребуется сформировать следующий запрос:

SELECT DATE_FORMAT (date_column, '%m %d %Y')
FROM tablename;

Код формата %m задает двузначный формат месяца, %d —двузначный формат дня, %Y — четырехзначный формат года. Наиболее полезные коды формата преобразования даты в MySQL перечислены в таблице.

Таблица. Коды формата MySQL-функции DATE_FORMAT()

Код Описание
%M Месяц, полное английское название.
%W День недели, полное английское название.
%D День месяца, числовой формат с текстовым суффиксом (например, lst).
%Y Год, четырехзначное число.
%y Год, двузначное число.
%a День недели, трехсимвольный формат.
%d День месяца, число с ведущими нулями.
%e День месяца, число безведущихнулей.
%m Месяц, число с ведущими нулями.
%c Месяц, число безведущих нулей.
%b Месяц, 3-символьное текстовое представление.
%j День года, числовое значение.
%H Часы в 24-часовом формате с ведущими нулями.
%k Часы в 24-часовом формате без ведущих нулей.
%h или %I Часы в 12-часовом формате с ведущими нулями.
%l Часы в 12-часовом формате без ведущих нулей.
%i Минуты с ведущими нулями.
%r Время в 12-часовом формате (hh:mm:ss [AM|PM]).
%T Время в 24-часовом формате (hh:mm:ss).
%S или %s Секунды, число с ведущими нулями.
%p AM или PM.
%w День недели, число от 0 (воскресенье) до 6(суббота).

Функция UNIX_TIMESTAMP работает аналогично, но преобразует значение столбца в метку времени Unix. Например:

SELECT UNIX_TIMESTAMP (date_column)
FROM tablename;

возвращает дату в формате метки Unix. Затем в PHP с ней можно производить любые операции.

Метки времени Unix используются для вычислений над датами. Не забывайте, что с помощью меток времени можно представлять даты между 1902 и 2038 годами, тогда как типа даты MySQL допускает более широкий диапазон.




  • Другие |
назадвверхвперед
Rambler's Top100