Эти функции также предназначены для работы с календарными типами данных. Рассмотрим их подробнее.
DATE_FORMAT(date, format) форматирует дату date в соответствии с выбранным форматом formate.
Эта функция очень часто используется. Например, в MySQL дата имеет формат представления YYYY-MM-DD (год-месяц-число),
а нам привычнее формат DD-MM-YYYY (число-месяц-год). Поэтому для привычного нам отображения даты ее необходимо переформатировать.
Давайте сначала приведем запрос, а затем разберемся, как задавать формат:
SELECT DATE_FORMAT(CURDATE(), '%d.%m.%Y');
Теперь дата выглядит для нас привычно. Для задания формата даты используются специальные определители. Для удобства перечислим их
в таблице.
Опред
Описание
%a
Сокращенное наименование дня недели (Mon - понедельник, Tue - вторник, Wed - среда, Thu - четверг,
Fri - пятница, Sat - суббота, Sun - воскресенье).
Пример:
SELECT DATE_FORMAT(CURDATE(), '%a');
Результат:
%b
Сокращенное наименование месяцев (Jan - январь, Feb - февраль, Mar - март, Apr - апрель,
May - май, Jun - июнь, Jul - июль, Aug - август, Sep - сентябрь, Oct - октябрь, Nov - ноябрь, Dec - декабрь).
Пример:
SELECT DATE_FORMAT(CURDATE(), '%b');
Результат:
%c
Месяц в числовой форме (1 - 12).
Пример:
SELECT DATE_FORMAT(CURDATE(), '%с');
Результат:
%d
День месяца в числовой форме с нулем (01 - 31).
Пример:
SELECT DATE_FORMAT(CURDATE(), '%d');
Результат:
%D
День месяца в английском варианте (1st, 2nd...).
Пример:
SELECT DATE_FORMAT(CURDATE(), '%D');
Результат:
%e
День месяца в числовой форме без нуля (1 - 31).
Пример:
SELECT DATE_FORMAT(CURDATE(), '%e');
Результат:
%H
Часы с ведущим нулем от 00 до 23.
Пример:
SELECT DATE_FORMAT('2011-04-15 23:03:20', '%H');
Результат:
%h
Часы с ведущим нулем от 00 до 12.
Пример:
SELECT DATE_FORMAT('2011-04-15 23:03:20', '%h');
Результат:
%i
Минуты от 00 до 59.
Пример:
SELECT DATE_FORMAT('2011-04-15 23:03:20', '%i');
Результат:
%j
День года от 001 до 366.
Пример:
SELECT DATE_FORMAT('2011-04-15 23:03:20', '%j');
Результат:
%k
Часы c ведущим нулем от 0 до 23.
Пример:
SELECT DATE_FORMAT('2011-12-31 01:03:20', '%k');
Результат:
%l
Часы без ведущим нуля от 1 до 12.
Пример:
SELECT DATE_FORMAT('2011-04-15 00:03:20', '%l');
Результат:
%M
Название месяца без сокращения.
Пример:
SELECT DATE_FORMAT('2011-04-15 00:03:20', '%M');
Результат:
%M
Название месяца без сокращения.
Пример:
SELECT DATE_FORMAT('2011-04-15 00:03:20', '%M');
Результат:
%m
Месяц в числовой форме с ведущим нулем (01 - 12).
Пример:
SELECT DATE_FORMAT('2011-04-15 00:03:20', '%m');
Результат:
%p
АМ или РМ для 12-часового формата.
Пример:
SELECT DATE_FORMAT('2011-04-15 00:03:20', '%p');
Результат:
%r
Время в 12-часовом формате.
Пример:
SELECT DATE_FORMAT('2011-04-15 00:03:20', '%r');
Результат:
%s
Секунды от 00 до 59.
Пример:
SELECT DATE_FORMAT('2011-04-15 00:03:20', '%s');
Результат:
%T
Время в 24-часовом формате.
Пример:
SELECT DATE_FORMAT('2011-04-15 21:03:20', '%T');
Результат:
%u
Неделя (00 - 52), где первым днем недели считается понедельник.
Пример:
SELECT DATE_FORMAT('2011-04-17 21:03:20', '%u');
Результат:
%U
Неделя (00 - 52), где первым днем недели считается воскресенье.
Пример:
SELECT DATE_FORMAT('2011-04-17 21:03:20', '%U');
Результат:
%W
Название дня недели без сокращения.
Пример:
SELECT DATE_FORMAT('2011-04-17 21:03:20', '%W');
Результат:
%w
Номер дня недели (0 - воскресенье, 6 - суббота).
Пример:
SELECT DATE_FORMAT('2011-04-17 21:03:20', '%w');
Результат:
%Y
Год, 4 разряда.
Пример:
SELECT DATE_FORMAT('2011-04-17 21:03:20', '%Y');
Результат:
%y
Год, 2 разряда.
Пример:
SELECT DATE_FORMAT('2011-04-17 21:03:20', '%y');
Результат:
STR_TO_DATE(date, format) функция обратная предыдущей, она принимает дату date в формате format,
а возвращает дату в формате MySQL.
Как видите, сама функция GET_FORMAT() возвращает формат представления, а вместе с функцией DATE_FORMAT() выдает дату в нужном
формате. Сделайте сами запросы со всеми пятью стандартами и посмотрите на разницу.
TIME_FORMAT(time, format) функция аналогична функции DATE_FORMAT(), но используется только для
времени:
SELECT TIME_FORMAT('22:38:15', '%H-%i-%s');
GET_FORMAT(date, format) функция возвращает строку форматирования, соответствующую одному
из пяти форматов времени:
EUR - европейский стандарт
USA - американский стандарт
JIS - японский индустриальный стандарт
ISO - стандарт ISO (международная организация стандартов)
INTERNAL - интернациональный стандарт
Эту функцию хорошо использовать совместно с предыдущей - DATE_FORMAT(). Посмотрим на примере:
Как видите, сама функция GET_FORMAT() возвращает формат представления, а вместе с функцией DATE_FORMAT() выдает дату в нужном
формате. Сделайте сами запросы со всеми пятью стандартами и посмотрите на разницу.
Ну вот, теперь вы знаете о работе с датами и временем в MySQL практически все. Это вам очень пригодится при разработке различных
web-приложений. Например, если пользователь в форму на сайте вводит дату в привычном ему формате, вам не составит труда применить
нужную функцию, чтобы в БД дата попала в нужном формате.