Spec-Zone .ru
спецификации, руководства, описания, API

12.7. Дата и Функции Времени

Этот раздел описывает функции, которые могут использоваться, чтобы управлять временными значениями. См. Раздел 11.3, "Дата и Типы Времени", для описания диапазона значений, которые каждый тип даты и времени имеет и допустимые форматы, в которых могут быть определены значения.

Таблица 12.13. Функции даты/Времени

Имя Описание
ADDDATE() Добавьте время значения (интервалы) к значению даты
ADDTIME() Добавить время
CONVERT_TZ() Преобразуйте от одного часового пояса до другого
CURDATE() Возвратите текущую дату
CURRENT_DATE(), CURRENT_DATE Синонимы для CURDATE ()
CURRENT_TIME(), CURRENT_TIME Синонимы для CURTIME ()
CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP Синонимы пока ()
CURTIME() Возвратите текущее время
DATE_ADD() Добавьте время значения (интервалы) к значению даты
DATE_FORMAT() Дата формата как определено
DATE_SUB() Вычтите временную стоимость (интервал) из даты
DATE() Извлеките часть даты даты или datetime выражения
DATEDIFF() Вычтите две даты
DAY() Синоним для DAYOFMONTH ()
DAYNAME() Возвратите имя буднего дня
DAYOFMONTH() Возвратите день месяца (0-31)
DAYOFWEEK() Возвратитесь будний день индексируют параметра
DAYOFYEAR() Возвратите день года (1-366)
EXTRACT() Часть извлечения даты
FROM_DAYS() Преобразуйте дневное число в дату
FROM_UNIXTIME() UNIX формата устанавливает метку времени как дата
GET_FORMAT() Возвратите строку формата даты
HOUR() Извлеките час
LAST_DAY Возвратитесь в последний день из месяца для параметра
LOCALTIME(), LOCALTIME Синоним пока ()
LOCALTIMESTAMP, LOCALTIMESTAMP() Синоним пока ()
MAKEDATE() Создайте дату с года и дня года
MAKETIME MAKETIME ()
MICROSECOND() Возвратите микросекунды из параметра
MINUTE() Возвратите минуту от параметра
MONTH() Возвратите месяц из даты, которую передают
MONTHNAME() Возвратите имя месяца
NOW() Возвратите текущую дату и время
PERIOD_ADD() Добавьте период к месячному годом
PERIOD_DIFF() Возвратите число месяцев между периодами
QUARTER() Возвратите четверть из параметра даты
SEC_TO_TIME() Преобразовывает секунды в формат 'HH:MM:SS'
SECOND() Возвратите второе (0-59)
STR_TO_DATE() Преобразуйте строку в дату
SUBDATE() Синоним для DATE_SUB () когда вызвано с тремя параметрами
SUBTIME() Вычтите времена
SYSDATE() Возвратите время, в которое выполняется функция
TIME_FORMAT() Формат как время
TIME_TO_SEC() Возвратите параметр, преобразованный в секунды
TIME() Извлеките часть времени выражения, которое передают
TIMEDIFF() Вычтите время
TIMESTAMP() С единственным параметром эта функция возвращает дату или datetime выражение; с двумя параметрами, суммой параметров
TIMESTAMPADD() Добавьте интервал к datetime выражению
TIMESTAMPDIFF() Вычтите интервал из datetime выражения
TO_DAYS() Возвратите параметр даты, преобразованный в дни
TO_SECONDS() Возвратите дату или datetime параметр, преобразованный в секунды с Года 0
UNIX_TIMESTAMP() Возвратите метку времени UNIX
UTC_DATE() Возвратите текущую дату UTC
UTC_TIME() Возвратите текущее время UTC
UTC_TIMESTAMP() Возвратите текущую дату UTC и время
WEEK() Возвратите недельное число
WEEKDAY() Возвратитесь будний день индексируют
WEEKOFYEAR() Возвратите календарную неделю даты (0-53)
YEAR() Возвратите год
YEARWEEK() Возвратите год и неделю

Вот пример, который использует функции даты. Следующий запрос выбирает все строки с a date_col значение изнутри прошлых 30 дней:

mysql> SELECT something FROM tbl_name    -> WHERE
        DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col;

Запрос также выбирает строки с датами, которые лежат в будущем.

Функции, которые ожидают значения даты обычно, принимают значения datetime и игнорируют часть времени. Функции, которые ожидают временные стоимости обычно, принимают значения datetime и игнорируют часть даты.

Функции, которые возвращают текущую дату или время, каждый оценивается только однажды на запрос в начале выполнения запроса. Это означает что многократные ссылки на функцию такой как NOW() в пределах единственного запроса всегда приводят к тому же самому результату. (В наших целях единственный запрос также включает звонок в сохраненную программу (сохраненная подпрограмма, триггер, или событие) и все подпрограммы, вызванные той программой.) Этот принцип также применяется к CURDATE(), CURTIME(), UTC_DATE(), UTC_TIME(), UTC_TIMESTAMP(), и к любому из их синонимов.

CURRENT_TIMESTAMP(), CURRENT_TIME(), CURRENT_DATE(), и FROM_UNIXTIME() возвращаемые значения функций в зоне текущего времени соединения, которая доступна как значение time_zone системная переменная. Кроме того, UNIX_TIMESTAMP() предполагает, что его параметром является значение datetime в зоне текущего времени. См. Раздел 10.6, "MySQL Server Time Zone Support".

Некоторые функции даты могут использоваться с "нулевыми" датами или неполными датами такой как '2001-11-00', тогда как другие не могут. Функции, которые извлекают части дат обычно, работают с неполными датами и таким образом могут возвратиться 0, когда Вы могли бы иначе ожидать ненулевое значение. Например:

mysql> SELECT DAYOFMONTH('2001-11-00'),
        MONTH('2005-00-00');        -> 0, 0

Другие функции ожидают полные даты и возврат NULL для неполных дат. Они включают функции, которые выполняют арифметику дат или ту карту части дат к именам. Например:

mysql> SELECT DATE_ADD('2006-05-00',INTERVAL 1
        DAY);        -> NULLmysql> SELECT
        DAYNAME('2006-05-00');        -> NULL

С MySQL 5.6.4 несколько функций более строги когда передано a DATE() значение функции как их параметр и отклоняет неполные даты с дневной частью нуля. На эти функции влияют: CONVERT_TZ(), DATE_ADD(), DATE_SUB(), DAYOFYEAR(), LAST_DAY(), TIMESTAMPDIFF(), TO_DAYS(), TO_SECONDS(), WEEK(), WEEKDAY(), WEEKOFYEAR(), YEARWEEK(). Это ограничение было ослаблено для LAST_DAY() в 5.6.5, чтобы разрешить дневную часть нуля.

MySQL 5.6.4 и поддерживает доли секунды для TIME, DATETIME, и TIMESTAMP значения, с до точности микросекунды. Функции, которые берут временные параметры, принимают значения с долями секунды. Возвращаемые значения от временных функций включают доли секунды как соответствующие.