Функции смены форматов
В мире существует несколько форматов, в которых может быть представлена дата. Например, в России и Европе принято записывать дату в формате День.Месяц.Год, а в США привычным является формат Месяц.ДЕНЬ.Год. .В MySQL по умолчанию принят формат даты ISO 8601: ГОД – МЕСЯЦ-ДЕНЬ. Но при разработке информационных систем в разных ситуациях бывает удобно использовать различные форматы даты. Для смены форматов в MySQL предусмотрено несколько функций.
Функция GET_FORMAT(date,формат) используется в качестве справочника форматов. Она позволяет узнать, как выглядит тот или иной формат.
В качестве аргумента формат может быть один из следующих форматов:
- EUR - европейский ;
- USA - американский ;
- JIS - японский индустриальный ;
- ISO - формат ISO;
- INTERNAL – интернациональный.
Чтобы узнать как выглядит тот или иной формат даты достаточно выполнить команду:
SELECT GET_FORMAT(date,’USA’);
Результат: %m.%d.%Y.
SELECT GET_FORMAT(date,’ISO’);
Результат: %Y-%m-%d.
В этих примерах формат даты записывается при помощи специальных определителей:
- %M – название месяца;
- %Y - год из четырех разрядов;
- %y – год из двух разрядов;
- %d – день месяца в интервале от 00 до 31
- %e – день месяца число в интервале от 0 до 31;
- %m – номер месяца в интервале от 00 до 12;
- %с – номер месяца в интервале от 0 до 12.
И т.д.
Для того чтобы перевести дату из одного формата в другой используется функция DATE_FORMAT(дата, формат), где аргумент формат задается перечисленными выше определителями.
Можно, например, изобрести собственный формат:
SELECT DATE_FORMAT('2016-09-10','%d / %c /%y');
Результат: 10 / 9 / 16
Но гораздо чаще нужно не изобретать форматы, а переводить даты в существующие форматы. Для таких задач в качестве аргумента формат в функции DATE_FORMAT можно использовать результат, возвращенный функцией GET_FORMAT .
SELECT DATE_FORMAT('2016-09-10',GET_FORMAT(date,'USA'));
Результат: 09.10.2016.
В этом примере дата '2016-09-10',изначально представленная в формате ISO, переведена в американский формат.
Точно также работают функции преобразования формата времени:
- GET_FORMAT(time,формат_времени) - показывает структуру формата времени.
- TIME_FORMAT(время,формат_времени) – преобразует время к указанному формату, где указанный формат – это результат, возвращенный функцией GET_FORMAT().
SELECT GET_FORMAT(time,'USA');
Результат: %h:%i:%s %p.
SELECT TIME_FORMAT('12:45:14',GET_FORMAT(time,'USA'));
Результат: 12:45:14 PM
При этом используются следующие определители формата времени:
- %H – час в интервале от 00 до 23;
- %k – час в интервале от 0 до 23;
- %h – час в интервале от 01 до 12;
- %i – час в интервале от 1 до 12;
- %i – минуты в интервале от 00 до 59;
- %s – секунды в интервале от 00 до 59.
И т.д.
Функции дней недели
- Функция DAYOFWEEK(дата) возвращает номер дня недели для аргумента дата начиная с воскресенья (1-воскресенье, 2-понедельник,…,7 - суббота).
- Функция WEEKDAY(дата) очень похожа на предыдущую, но она возвращает номер дня недели для аргумента дата начиная с понедельника (0-понедельник, 1-вторник, …,6-воскресенье).
- Функция DAYNAME(дата) возвращает название дня недели.
SELECT DAYOFWEEK('2016-09-10');
Результат: 7.
SELECT WEEKDAY('2016-09-10');
Результат: 5.
Таким образом, обе функции показывают, что 10 сентября 2016 года попадает на субботу, но выражают результат в разных системах!
SELECT DAYNAME('2016-09-10');
Результат: Saturday.
Функции номера дня
Функция DAYOFMONTH(дата) выделяет из аргумента дата номер дня месяца в интервале [1;31].
SELECT DAYOFMONTH('2016-09-10');
Результат: 10.
Функция DAYOFYEAR(дата) возвращает номер дня года в интервале [1;366].
SELECT DAYOFYEAR('2016-09-10');
Результат: 254.
Функции месяца
- Функция MONTH(дата) возвращает порядковый номер месяца в году в интервале [1;12].
- Функция MONTHNAME(дата) возвращает название месяца.
SELECT MONTH('2016-09-10');
Результат: 9.
SELECT MONTHNAME('2016-09-10');
Результат: September.
Другие функции даты
- Функция YEAR(дата) возвращает год для аргумента дата.
- Функция QUARTER(дата) возвращает номер квартала для аргумента дата в интервале [1;4].
SELECT YEAR('2016-09-10');
Результат 2016.
SELECT QUARTER('2016-09-10');
Результат: 3.
Функции времени
- Функция HOUR(время) возвращает час аргумента время в интервале [1;59].
- Функция MINUTE (время) возвращает число минут для аргумента время в интервале [1;59].
- Функция SECOND(время) возвращает число секунд для аргумента время в интервале [1;59].
SELECT HOUR('10:20:02');
Результат: 10.
SELECT MINUTE('10:20:02');
Результат: 20.
SELECT SECOND('10:20:02');
Результат: 2.