Как создать сайтУроки SQL → SQL функции форматирования даты и времени

MYSQL функции форматирования даты и времени

Эти функции также предназначены для работы с календарными типами данных. Рассмотрим их подробнее.
  • 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-приложений. Например, если пользователь в форму на сайте вводит дату в привычном ему формате, вам не составит труда применить нужную функцию, чтобы в БД дата попала в нужном формате.



Предыдущий урок Вернуться в раздел Следующий урок 
Программирование на Python для начинающих


Теперь нажмите кнопку, что бы не забыть адрес и вернуться к нам снова.