Цель: научиться работать с функцией форматирования даты и времени
Эти функции также предназначены для работы с календарными типами данных. Рассмотрим их подробнее.
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.
SELECT STR_TO_DATE('17.04.2011 23:50', '%d.%m.%Y %H:%i');
Как видите, сама функция 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(). Посмотрим на примере:
SELECT GET_FORMAT(DATE, 'EUR'), DATE_FORMAT('2011-04-17', GET_FORMAT(DATE, 'EUR'));
Как видите, сама функция GET_FORMAT() возвращает формат представления, а вместе с функцией DATE_FORMAT() выдает дату в нужном формате. Сделайте сами запросы со всеми пятью стандартами и посмотрите на разницу. Ну вот, теперь вы знаете о работе с датами и временем в MySQL практически все. Это вам очень пригодится при разработке различных web-приложений. Например, если пользователь в форму на сайте вводит дату в привычном ему формате, вам не составит труда применить нужную функцию, чтобы в БД дата попала в нужном формате.
Практическая работа № 15
|