MyOfficeLife

Чтиво

Главная » Статьи » Обучение » MySQL

MySQL: Описание и примеры функций даты и времени
Для получения текущей даты и времени используются следующие функции:
□ NOW(), LOCALTIME() и LOCALTIMESTAMP() возвращают текущие дату и время в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС;
SELECT NOW();
/* Выведет: 2009-09-21 22:35:04 */
SELECT LOCALTIME();
/* Выведет: 2009-09-21 22:35:04 */
SELECT LOCALTIMESTAMP();
/* Выведет: 2009-09-21 22:35:04 */
□ UTC_TIMESTAMP() выводит текущие дату и время по Гринвичу в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС;
SELECT UTC_TIMESTAMP();
/* Выведет: 2009-09-21 18:36:21 */
□ SYSDATE() позволяет определить текущие дату и время в формате ГГГГ- ММ-ДД ЧЧ:ММ:СС:
SELECT SYSDATE();
/* Выведет: 2009-09-21 22:36:43 */
В отличие от функции NOW() и ее синонимов SYSDATE() возвращает время, в которое она была вызвана, тогда как NOW() возвращает время начала выполнения запроса;
□ CURDATE() и CURRENT_DATE() возвращают текущую дату в формате ГГГГ- ММ-ДД:
SELECT CURDATE();
/* Выведет: 2009-09-21 */
SELECT CURRENT_DATE();
/* Выведет: 2009-09-21 */
□ UTC_DATE() позволяет определить текущую дату по Гринвичу в формате ГГГГ-ММ-ДД:
SELECT UTC_DATE();
/* Выведет: 2009-09-21 */
□ CURTIME() и CURRENT_TIME() возвращают текущее время в формате ЧЧ:ММ:СС;
SELECT CURTIME();
/* Выведет: 22:38:01 */
SELECT CURRENT_TIME();
/* Выведет: 22:38:01 */
□ UTC_TIME() сообщает текущее время по Гринвичу в формате ЧЧ:ММ:СС:
SELECT UTC_TIME();
/* Выведет: 18:38:01 */
□ UNIX_TIMESTAMP() подсчитывает число секунд, прошедших с полуночи
1 января 1970 г.:
SELECT UNIX_TIMESTAMP();
/* Выведет: 1253558203 */
 
Ряд функций позволяют получить следующие фрагменты даты и времени:
□ DATE() — дата:
SELECT DATE('2009-09-21 22:36:43');
/* Выведет: 2009-09-21 */
□ YEAR() — год:
SELECT YEAR('2009-09-21 22:36:43');
/* Выведет: 2009 */
□ MONTH() — месяц:
SELECT MONTH('2009-09-21 22:36:43');
/* Выведет: 9 */
□ MONTHNAME() — английское название месяца в виде строки:
SELECT MONTHNAME('2009-09-21 22:36:43');
/* Выведет: September */
□ DAY() и DAYOFMONTH() — номер дня в месяце:
SELECT DAY('2009-09-21 22:36:43');
/* Выведет: 21 */
SELECT DAYOFMONTH('2009-09-21 22:36:43');
/* Выведет: 21 */
□ TIME() — время:
SELECT TIME('2009-09-21 22:36:43');
/* Выведет: 22:36:43 */
□ HOUR() — час:
SELECT HOUR('2009-09-21 22:36:43');
/* Выведет: 22 */
□ MINUTE() — минуты:
SELECT MINUTE('2009-09-21 22:36:43');
/* Выведет: 36 */
□ SECOND() — секунды:
SELECT SECOND('2009-09-21 22:36:43');
/* Выведет: 43 */
□ MICROSECOND() — микросекунды:
SELECT MICROSECOND('2009-09-21 22:36:43.123456');
/* Выведет: 123456 */
 
Вместо перечисленных функций можно использовать функцию EXTRACT().
Функция имеет следующий формат:
EXTRACT(<Тип> FROM <Дата и время>)
Параметр <Тип> может принимать такие значения:
□ YEAR — год:
SELECT EXTRACT(YEAR FROM '2009-09-21 22:36:43');
/* Выведет: 2009 */
□ YEAR_MONTH — год и месяц:
SELECT EXTRACT(YEAR_MONTH FROM '2009-09-21 22:36:43');
/* Выведет: 200909 */
□ MONTH — месяц:
SELECT EXTRACT(MONTH FROM '2009-09-21 22:36:43');
/* Выведет: 9 */
□ DAY — день:
SELECT EXTRACT(DAY FROM '2009-09-21 22:36:43');
/* Выведет: 21 */
□ DAY_HOUR — день и час:
SELECT EXTRACT(DAY_HOUR FROM '2009-09-21 22:36:43');
/* Выведет: 2122 */
□ DAY_MINUTE — день, час и минуты:
SELECT EXTRACT(DAY_MINUTE FROM '2009-09-21 22:36:43');
/* Выведет: 212236 */
□ DAY_SECOND — день, час, минуты и секунды:
SELECT EXTRACT(DAY_SECOND FROM '2009-09-21 22:36:43');
/* Выведет: 21223643 */
□ DAY_MICROSECOND — день, час, минуты, секунды и микросекунды:
SELECT EXTRACT(DAY_MICROSECOND FROM '2009-09-21
22:36:43.111111');
/* Выведет: 21223643111111 */
□ HOUR — час:
SELECT EXTRACT(HOUR FROM '2009-09-21 22:36:43');
/* Выведет: 22 */
□ HOUR_MINUTE — час и минуты:
SELECT EXTRACT(HOUR_MINUTE FROM '2009-09-21 22:36:43');
/* Выведет: 2236 */
□ HOUR_SECOND — час, минуты и секунды:
SELECT EXTRACT(HOUR_SECOND FROM '2009-09-21 22:36:43');
/* Выведет: 223643 */
□ HOUR_MICROSECOND — час, минуты, секунды и микросекунды:
SELECT EXTRACT(HOUR_MICROSECOND FROM '2009-09-21 22:36:43.111111');
/* Выведет: 223643111111 */
□ MINUTE — минуты:
SELECT EXTRACT(MINUTE FROM '2009-09-21 22:36:43');
/* Выведет: 36 */
□ MINUTE_SECOND — минуты и секунды:
SELECT EXTRACT(MINUTE_SECOND FROM '2009-09-21 22:36:43');
/* Выведет: 3643 */
□ MINUTE_MICROSECOND — минуты, секунды и микросекунды:
SELECT EXTRACT(MINUTE_MICROSECOND FROM '2009-09-21
22:36:43.111111');
/* Выведет: 3643111111 */
□ SECOND — секунды:
SELECT EXTRACT(SECOND FROM '2009-09-21 22:36:43');
/* Выведет: 43 */
□ SECOND_MICROSECOND — секунды и микросекунды:
SELECT EXTRACT(SECOND_MICROSECOND
FROM '2009-09-21 22:36:43.111111');
/* Выведет: 43111111 */
□ MICROSECOND — микросекунды:
SELECT EXTRACT(MICROSECOND FROM '2009-09-21 22:36:43.111111');
/* Выведет: 111111 */
 
С помощью следующих функций можно получить дополнительные сведения о дате:
□ QUARTER() — порядковый номер квартала в году (от 1 до 4):
SELECT QUARTER('2009-09-21');
/* Выведет: 3 */
□ WEEKOFYEAR() — порядковый номер недели в году (от 1 до 53):
SELECT WEEKOFYEAR('2009-09-21');
/* Выведет: 39 */
□ WEEK() — порядковый номер недели в году (от 0 до 53). Неделя начинается с воскресенья:
SELECT WEEK('2009-09-21');
/* Выведет: 38 */
□ YEARWEEK() — число в формате ГГГГНН, где ГГГГ — год, а НН — порядковый номер недели в году (от 0 до 53). Неделя начинается с воскресенья:
SELECT YEARWEEK('2009-09-21');
/* Выведет: 200938 */
□ DAYOFYEAR() — порядковый номер дня в году (от 1 до 366):
SELECT DAYOFYEAR('2009-09-21');
/* Выведет: 264 */
□ MAKEDATE(<Год>, <Номер дня в году>) — дата в формате ГГГГ-ММ-ДД по номеру дня в году:
SELECT MAKEDATE(2009, 264);
/* Выведет: 2009-09-21 */
□ DAYOFWEEK() — порядковый номер дня недели (1 — для воскресенья, 2 — для понедельника, ..., 7 — для субботы):
SELECT DAYOFWEEK('2009-09-21');
/* Выведет: 2 */
□ WEEKDAY() — порядковый номер дня недели (0 — для понедельника, 1 — для вторника, ..., 6 — для воскресенья):
SELECT WEEKDAY('2009-09-21');
/* Выведет: 0 */
□ DAYNAME() — название дня недели на английском языке:
SELECT DAYNAME('2009-09-21');
/* Выведет: Monday */
□ TO_DAYS(<Дата>) — количество дней, прошедших с нулевого года:
SELECT TO_DAYS('2009-09-21');
/* Выведет: 734036 */
□ FROM_DAYS(<Количество дней>) — дата в формате ГГГГ-ММ-ДД по количеству дней, прошедших с нулевого года:
SELECT FROM_DAYS(734036);
/* Выведет: 2009-09-21 */
□ TIME_TO_SEC(<Время>) — количество секунд, прошедших с начала суток:
SELECT TIME_TO_SEC('12:52:35');
/* Выведет: 46355 */
□ SEC_TO_TIME(<Количество секунд>) — время в формате ЧЧ:ММ:СС по количеству секунд, прошедших с начала суток:
SELECT SEC_TO_TIME(46355);
/* Выведет: 12:52:35 */
Для манипуляции датой и временем можно использовать следующие функции:
□ ADDDATE(<Дата>, INTERVAL <Интервал> <Тип>) и DATE_ADD(<Дата>,
INTERVAL <Интервал> <Тип>) прибавляют к параметру <Дата> временной интервал;
□ SUBDATE(<Дата>, INTERVAL <Интервал> <Тип>) и DATE_SUB(<Дата>,
INTERVAL <Интервал> <Тип>) вычитают из параметра <Дата> временной интервал.
Параметр <Тип> в функциях ADDDATE(), DATE_ADD(), SUBDATE() и
DATE_SUB() может принимать следующие значения:
• YEAR — год:
SELECT ADDDATE('2009-09-21 22:36:43', INTERVAL 2 YEAR);
/* Выведет: 2011-09-21 22:36:43 */
• YEAR_MONTH — год и месяц (формат 'ГГ-ММ'):
SELECT ADDDATE('2009-09-21 22:36:43', INTERVAL '2-2' YEAR_MONTH);
/* Выведет: 2011-11-21 22:36:43 */
• MONTH — месяц:
SELECT ADDDATE('2009-09-21 22:36:43', INTERVAL 3 MONTH);
/* Выведет: 2009-12-21 22:36:43 */
• DAY — день:
SELECT ADDDATE('2009-09-21 22:36:43', INTERVAL 6 DAY);
/* Выведет: 2009-09-27 22:36:43 */
• DAY_HOUR — день и час (формат 'ДД ЧЧ'):
SELECT ADDDATE('2009-09-21 22:36:43', INTERVAL '6 3'
DAY_HOUR);
/* Выведет: 2009-09-28 01:36:43 */
• DAY_MINUTE — день, час и минуты (формат 'ДД ЧЧ:ММ'):
SELECT ADDDATE('2009-09-21 22:36:43',
INTERVAL '6 3:5' DAY_MINUTE);
/* Выведет: 2009-09-28 01:41:43 */
• DAY_SECOND — день, час, минуты и секунды (формат 'ДД ЧЧ:ММ:СС'):
SELECT ADDDATE('2009-09-21 22:36:43',
INTERVAL '6 3:5:15' DAY_SECOND);
/* Выведет: 2009-09-28 01:41:58 */
• DAY_MICROSECOND — день, час, минуты, секунды и микросекунды (формат 'ДД ЧЧ:ММ:СС.XXXXXX'):
SELECT ADDDATE('2009-09-21 22:36:43',
INTERVAL '6 3:5:15.10' DAY_MICROSECOND);
/* Выведет: 2009-09-28 01:41:58.100000 */
• HOUR — час:
SELECT ADDDATE('2009-09-21 22:36:43', INTERVAL 3 HOUR);
/* Выведет: 2009-09-22 01:36:43 */
• HOUR_MINUTE — час и минуты (формат 'ЧЧ:ММ'):
SELECT ADDDATE('2009-09-21 22:36:43',
INTERVAL '3:7' HOUR_MINUTE);
/* Выведет: 2009-09-22 01:43:43 */
• HOUR_SECOND — час, минуты и секунды (формат 'ЧЧ:ММ:СС'):
SELECT ADDDATE('2009-09-21 22:36:43',
INTERVAL '3:7:15' HOUR_SECOND);
/* Выведет: 2009-09-22 01:43:58 */
• HOUR_MICROSECOND — час, минуты, секунды и микросекунды (формат
'ЧЧ:ММ:СС.XXXXXX'):
SELECT ADDDATE('2009-09-21 22:36:43',
INTERVAL '3:7:15.10' HOUR_MICROSECOND);
/* Выведет: 2009-09-22 01:43:58.100000 */
• MINUTE — минуты:
SELECT ADDDATE('2009-09-21 22:36:43', INTERVAL 8 MINUTE);
/* Выведет: 2009-09-21 22:44:43 */
• MINUTE_SECOND — минуты и секунды (формат 'ММ:СС'):
SELECT ADDDATE('2009-09-21 22:36:43',
INTERVAL '3:7' MINUTE_SECOND);
/* Выведет: 2009-09-21 22:39:50 */
• MINUTE_MICROSECOND — минуты, секунды и микросекунды (формат
'ММ:СС.XXXXXX'):
SELECT ADDDATE('2009-09-21 22:36:43',
INTERVAL '3:7.11' MINUTE_MICROSECOND);
/* Выведет: 2009-09-21 22:39:50.110000 */
• SECOND — секунды:
SELECT ADDDATE('2009-09-21 22:36:43', INTERVAL 15 SECOND);
/* Выведет: 2009-09-21 22:36:58 */
• SECOND_MICROSECOND — секунды и микросекунды (формат
'СС.XXXXXX'):
SELECT ADDDATE('2009-09-21 22:36:43',
INTERVAL '15.123456' SECOND_MICROSECOND);
/* Выведет: 2009-09-21 22:36:58.123456 */
• MICROSECOND — микросекунды:
SELECT ADDDATE('2009-09-21 22:36:43',
INTERVAL 123456 MICROSECOND);
/* Выведет: 2009-09-21 22:36:43.123456 */
 
Кроме того, функции ADDDATE() и SUBDATE() можно применять в сокращенном формате, описанном далее;
□ ADDDATE(<Дата>, <Интервал в днях>) прибавляет к параметру <Дата> временной интервал в днях. Если указать перед интервалом знак -, то интервал вычитается из даты:
SELECT ADDDATE('2009-09-21', 10);
/* Выведет: 2009-10-01 */
SELECT ADDDATE('2009-09-21', -10);
/* Выведет: 2009-09-11 */
□ SUBDATE(<Дата>, <Интервал в днях>) вычитает из параметра <Дата> временной интервал в днях.
Если указать перед интервалом знак -, то интервал прибавляется к дате:
SELECT SUBDATE('2009-09-21', 10);
/* Выведет: 2009-09-11 */
SELECT SUBDATE('2009-09-21', -10);
/* Выведет: 2009-10-01 */
□ ADDTIME(<Дата>, <Время>) прибавляет к параметру <Дата> временной интервал:
SELECT ADDTIME('2009-09-21 22:36:43', '12:52:35');
/* Выведет: 2009-09-22 11:29:18 */
□ SUBTIME(<Дата>, <Время>) вычитает из параметра <Дата> временной ин-
тервал:
SELECT SUBTIME('2009-09-21 22:36:43', '12:52:35');
/* Выведет: 2009-09-21 09:44:08 */
□ DATEDIFF(<Конечная дата>, <Начальная дата>) вычисляет количество дней между двумя датами:
SELECT DATEDIFF('2009-09-27', '2009-09-21');
/* Выведет: 6 */
□ TIMEDIFF(<Конечная дата>, <Начальная дата>) вычисляет разницу между двумя временными значениями:
SELECT TIMEDIFF('2009-09-21 22:36:43', '2009-09-21 15:36:43');
/* Выведет: 07:00:00 */
□ PERIOD_ADD(<Дата>, <Количество месяцев>) добавляет заданное <Количество месяцев> к дате, заданной в формате ГГГГММ или ГГММ:
SELECT PERIOD_ADD(200904, 4);
/* Выведет: 200908 */
□ PERIOD_DIFF(<Конечная дата>, <Начальная дата>) вычисляет разницу в
месяцах между двумя временными значениями, заданными в формате
ГГГГММ или ГГММ:
SELECT PERIOD_DIFF(200908, 200904);
/* Выведет: 4 */
□ CONVERT_TZ(<Дата>, <Часовой пояс1>, <Часовой пояс2>) переводит дату из одного часового пояса в другой:
SELECT CONVERT_TZ('2009-09-21 22:36:43', '+00:00', '+4:00');
/* Выведет: 2009-09-22 02:36:43 */
□ LAST_DAY(<Дата>) возвращает дату в формате ГГГГ-ММ-ДД, в которой день выставлен на последний день текущего месяца:
SELECT LAST_DAY('2009-09-21 22:36:43');
/* Выведет: 2009-09-30 */
□ MAKETIME(<Часы>, <Минуты>, <Секунды>) возвращает время в формате ЧЧ:ММ:СС:
SELECT MAKETIME(12, 52, 35);
/* Выведет: 12:52:35 */
□ TIMESTAMP(<Дата>, [<Время>]) возвращает дату в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС:
SELECT TIMESTAMP('2009-09-21');
/* Выведет: 2009-09-21 00:00:00 */
SELECT TIMESTAMP('2009-09-21', '12:52:35');
/* Выведет: 2009-09-21 12:52:35 */
 
Помимо описанных функций добавить или вычесть интервал времени можно с помощью операторов + и -, за которыми следует ключевое слово INTERVAL, значение и тип интервала. Применимы те же типы интервалов, что и в функциях ADDDATE(), DATE_ADD(), SUBDATE() и DATE_SUB():
SELECT '2009-09-21 22:36:43' + INTERVAL '3:7:15' HOUR_SECOND;
/* Выведет: 2009-09-22 01:43:58 */
SELECT '2009-09-21 22:36:43' - INTERVAL '3:7:15' HOUR_SECOND;
/* Выведет: 2009-09-21 19:29:28 */
 
Для форматирования даты и времени также предназначено несколько функций:
□ DATE_FORMAT(<Дата>, <Формат>) форматирует дату в соответствии со строкой <Формат>:
SELECT DATE_FORMAT('2009-09-21 22:36:43', '%d.%m.%Y');
/* Выведет: 21.09.2009 */
□ STR_TO_DATE(<Дата>, <Формат>) возвращает дату в форматах ГГГГ-ММ-ДД ЧЧ:ММ:СС или ГГГГ-ММ-ДД по дате, соответствующей строке <Формат>:
SELECT STR_TO_DATE('21.09.2009 12:52:35', '%d.%m.%Y %H:%i:%s');
/* Выведет: 2009-09-21 12:52:35 */
□ TIME_FORMAT(<Время>, <Формат>) форматирует время в соответствии со строкой <Формат>:
SELECT TIME_FORMAT('12:52:35', '%H %i %s');
/* Выведет: 12 52 35 */
□ FROM_UNIXTIME(<Дата>, [<Формат>]) возвращает дату в формате ГГГГ- ММ-ДД ЧЧ:ММ:СС или соответствующую строке <Формат> по количеству секунд, прошедших с полуночи 1 января 1970 г.:
SELECT FROM_UNIXTIME(1239671919);
/* Выведет: 2009-04-14 05:18:39 */
SELECT FROM_UNIXTIME(1239671919, '%d.%m.%Y');
/* Выведет: 14.04.2009 */
□ GET_FORMAT(<Тип времени>, '<Стандарт>') возвращает строку форматирования для пяти стандартов отображения даты и времени. Параметр
<Тип времени> может принимать следующие значения:
• DATETIME — дата и время;
• DATE — дата;
• TIME — время.
 
Параметр <Стандарт> может принимать такие значения:
• ISO — стандарт ISO;
• EUR — европейский стандарт;
• USA — американский стандарт;
• JIS — японский стандарт;
• INTERNAL — внутренний формат MySQL.
 
Например:
SELECT GET_FORMAT(DATE, 'EUR');
/* Выведет: %d.%m.%Y */
SELECT DATE_FORMAT('2009-09-21 22:36:43',
GET_FORMAT(DATE, 'EUR'));
/* Выведет: 21.09.2009 */
Параметр <Формат> в функциях форматирования может содержать следующие комбинации символов:
□ %Y — год из 4-х цифр;
□ %y — год из 2-х цифр;
□ %m — номер месяца с предваряющим нулем (от 01 до 12);
□ %c — номер месяца без предваряющего нуля (от 1 до 12);
□ %b — аббревиатура месяца из 3-х букв по-английски;
□ %M — полное название месяца по-английски;
□ %d — номер дня с предваряющим нулем (от 01 до 31);
□ %e — номер дня без предваряющего нуля (от 1 до 31);
□ %w — номер дня недели (0 — для воскресенья и 6 — для субботы);
□ %a — аббревиатура дня недели из 3-х букв по-английски;
□ %W — полное название дня недели по-английски;
□ %H — часы в 24-часовом формате (от 00 до 23);
□ %h — часы в 12-часовом формате (от 01 до 12);
□ %i — минуты (от 00 до 59);
□ %s — секунды (от 00 до 59);
□ %f — микросекунды;
□ %% — знак процента.
  
Настройки параметра <Формат> зависят от значения переменной lc_time_names. Выведем текущее значение переменной:
SELECT @@lc_time_names;
/* Выведет: en_US */
В качестве примера изменим значение переменной и выведем название месяца на русском языке:
SELECT DATE_FORMAT('2009-02-19 22:36:43', '%d %M %Y');
/* Выведет: 19 February 2009 */
SET lc_time_names = 'ru_RU';
SELECT DATE_FORMAT('2009-02-19 22:36:43', '%d %M %Y');
/* Выведет: 19 Февраля 2009 */


Источник: http://xoops.ws/modules/instruction/page.php?id=478
Категория: MySQL | Добавил: selesnow (15.01.2014)
Просмотров: 1300 | Теги: MySQL, Дата и время | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:

Категории раздела

Excel [4]
Приёмы и хитрости Excel
Экономика [8]
MySQL [7]
Приёмы , описание функций , решение практических задачь
Маркетинг [7]
Google Spreadsheets/Google Таблицы [0]

Реклама

Поделиться

Слушать радио


Курс в обменниках

Курсы наличного обмена на сегодня

Курс НБУ

 Курсы НБУ на сегодня

Курсы ЦБР

Курсы ЦБ РФ на сегодня

Конвертер валют

Калькулятор валют

Киевское время

Статистика


Онлайн всего: 1
Гостей: 1
Пользователей: 0

LiveInternet

Rambler

Yandex

Яндекс.Метрика

Mail.RU

Рейтинг@Mail.ru

HotLog

OpenStar

Форма входа