Spec-Zone .ru
спецификации, руководства, описания, API
|
Этот раздел описывает функции, которые могут использоваться, чтобы управлять временными значениями. См. Раздел 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
FROMtbl_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
значения, с до точности
микросекунды. Функции, которые берут временные параметры, принимают значения с долями секунды. Возвращаемые
значения от временных функций включают доли секунды как соответствующие.
ADDDATE(
, date
,INTERVAL expr
unit
)ADDDATE(
expr
,days
)
Когда вызвано с INTERVAL
форма второго параметра, ADDDATE()
синоним для DATE_ADD()
. Связанная функция SUBDATE()
синоним для DATE_SUB()
. Для получения информации о INTERVAL
unit
параметр, см.
обсуждение для DATE_ADD()
.
mysql>SELECT DATE_ADD('2008-01-02', INTERVAL 31 DAY);
-> '2008-02-02'mysql>SELECT ADDDATE('2008-01-02', INTERVAL 31 DAY);
-> '2008-02-02'
Когда вызвано с days
форма второго параметра, MySQL
обрабатывает это как целое число дней, которые будут добавлены к expr
.
mysql> SELECT ADDDATE('2008-01-02',
31);
-> '2008-02-02'
ADDTIME()
добавляет expr2
к expr1
и возвращает результат. expr1
время или datetime выражение, и expr2
выражение времени.
mysql>SELECT ADDTIME('2007-12-31 23:59:59.999999', '1 1:1:1.000002');
-> '2008-01-02 01:01:01.000001'mysql>SELECT ADDTIME('01:00:00.999999', '02:00:00.999998');
-> '03:00:01.999997'
CONVERT_TZ()
преобразовывает значение datetime dt
от часового пояса, данного from_tz
к часовому поясу, данному to_tz
и возвращает получающееся значение. Часовые пояса определяются как описано в Разделе
10.6, "MySQL Server Time Zone Support". Эта функция возвраты NULL
если параметры недопустимы.
Если значение падает из поддерживаемого диапазона TIMESTAMP
введите когда преобразовано из from_tz
к UTC не происходит никакое преобразование. TIMESTAMP
диапазон описывается в Разделе
11.1.2, "Дата и Краткий обзор Типа Времени".
mysql>SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
-> '2004-01-01 13:00:00'mysql>SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00');
-> '2004-01-01 22:00:00'
Использовать названный часовыми поясами такой как 'MET'
или 'Europe/Moscow'
, таблицы часового пояса должны быть должным
образом установлены. См. Раздел 10.6, "MySQL
Server Time Zone Support", для инструкций.
Возвращает текущую дату как значение в 'YYYY-MM-DD'
или YYYYMMDD
формат, в зависимости от того, используется ли функция в строке
или числовом контексте.
mysql>SELECT CURDATE();
-> '2008-06-13'mysql>SELECT CURDATE() + 0;
-> 20080613
CURRENT_DATE
и CURRENT_DATE()
синонимы для CURDATE()
.
CURRENT_TIME
, CURRENT_TIME([
fsp
])
CURRENT_TIME
и CURRENT_TIME()
синонимы для CURTIME()
.
CURRENT_TIMESTAMP
, CURRENT_TIMESTAMP([
fsp
])
CURRENT_TIMESTAMP
и CURRENT_TIMESTAMP()
синонимы для NOW()
.
Возвращает текущее время как значение в 'HH:MM:SS'
или HHMMSS
формат, в зависимости от того, используется ли функция в строке
или числовом контексте. Значение выражается в зоне текущего времени.
С MySQL 5.6.4, если fsp
параметр дается, чтобы определить
точность долей секунды от 0 до 6, возвращаемое значение включает часть долей секунды этого много
цифр. Прежде 5.6.4, любой параметр игнорируется.
mysql>SELECT CURTIME();
-> '23:50:26'mysql>SELECT CURTIME() + 0;
-> 235026.000000
Извлекает часть даты даты или datetime выражения expr
.
mysql> SELECT DATE('2003-12-31
01:02:03');
-> '2003-12-31'
DATEDIFF()
возвраты expr1
– expr2
выраженный как значение в днях от одной даты до
другого. expr1
и expr2
дата или выражения "дата и время".
Только части даты значений используются в вычислении.
mysql>SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30');
-> 1mysql>SELECT DATEDIFF('2010-11-30 23:59:59','2010-12-31');
-> -31
DATE_ADD(
, date
,INTERVAL expr
unit
)DATE_SUB(
date
,INTERVAL expr
unit
)
Эти функции выполняют арифметику дат. date
параметр
определяет запускающуюся дату или значение datetime. expr
выражение, определяющее значение интервала, которое будет добавлено или вычтено из запускающейся
даты. expr
строка; это может запуститься с"-
"для
отрицательных интервалов. unit
ключевое слово, указывающее
на модули, в которых должно быть интерпретировано выражение.
INTERVAL
ключевое слово и unit
спецификатор не является чувствительным к регистру.
Следующая таблица показывает ожидаемую форму expr
параметр
за каждого unit
значение.
unit Значение |
Ожидаемый expr Формат |
---|---|
MICROSECOND |
MICROSECONDS |
SECOND |
SECONDS |
MINUTE |
MINUTES |
HOUR |
HOURS |
DAY |
DAYS |
WEEK |
WEEKS |
MONTH |
MONTHS |
QUARTER |
QUARTERS |
YEAR |
YEARS |
SECOND_MICROSECOND |
'SECONDS.MICROSECONDS' |
MINUTE_MICROSECOND |
'MINUTES:SECONDS.MICROSECONDS' |
MINUTE_SECOND |
'MINUTES:SECONDS' |
HOUR_MICROSECOND |
'HOURS:MINUTES:SECONDS.MICROSECONDS' |
HOUR_SECOND |
'HOURS:MINUTES:SECONDS' |
HOUR_MINUTE |
'HOURS:MINUTES' |
DAY_MICROSECOND |
'DAYS HOURS:MINUTES:SECONDS.MICROSECONDS' |
DAY_SECOND |
'DAYS HOURS:MINUTES:SECONDS' |
DAY_MINUTE |
'DAYS HOURS:MINUTES' |
DAY_HOUR |
'DAYS HOURS' |
YEAR_MONTH |
'YEARS-MONTHS' |
Возвращаемое значение зависит от параметров:
Гарантировать, что результат DATETIME
, можно использовать CAST()
преобразовать первый параметр DATETIME
.
MySQL разрешает любой разделитель пунктуации в expr
формат. Показанные в таблице являются предложенными разделителями. Если date
параметром является a DATE
значение и Ваши вычисления включают только YEAR
, MONTH
, и DAY
части (то есть, никакие части времени), результатом является a DATE
значение. Иначе, результатом является a DATETIME
значение.
Арифметика дат также может быть выполнена, используя INTERVAL
вместе с
+
или -
оператор:
date
+ INTERVALexpr
unit
date
- INTERVALexpr
unit
INTERVAL
разрешается по обе стороны от expr
unit
+
оператор, если выражение с другой стороны является значением
datetime или датой. Для -
оператор, INTERVAL
разрешается только на правой стороне,
потому что не имеет никакого смысла вычитать дату или значение datetime от интервала. expr
unit
mysql>SELECT '2008-12-31 23:59:59' + INTERVAL 1 SECOND;
-> '2009-01-01 00:00:00'mysql>SELECT INTERVAL 1 DAY + '2008-12-31';
-> '2009-01-01'mysql>SELECT '2005-01-01' - INTERVAL 1 SECOND;
-> '2004-12-31 23:59:59'mysql>SELECT DATE_ADD('2000-12-31 23:59:59',
->INTERVAL 1 SECOND);
-> '2001-01-01 00:00:00'mysql>SELECT DATE_ADD('2010-12-31 23:59:59',
->INTERVAL 1 DAY);
-> '2011-01-01 23:59:59'mysql>SELECT DATE_ADD('2100-12-31 23:59:59',
->INTERVAL '1:1' MINUTE_SECOND);
-> '2101-01-01 00:01:00'mysql>SELECT DATE_SUB('2005-01-01 00:00:00',
->INTERVAL '1 1:1:1' DAY_SECOND);
-> '2004-12-30 22:58:59'mysql>SELECT DATE_ADD('1900-01-01 00:00:00',
->INTERVAL '-1 10' DAY_HOUR);
-> '1899-12-30 14:00:00'mysql>SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY);
-> '1997-12-02'mysql>SELECT DATE_ADD('1992-12-31 23:59:59.000002',
->INTERVAL '1.999999' SECOND_MICROSECOND);
-> '1993-01-01 00:00:01.000001'
Если Вы определяете значение интервала, которое слишком коротко (не включает все части интервала,
которые ожидались бы от unit
ключевое слово), MySQL
предполагает, что Вы не учли крайние левые части значения интервала. Например, если Вы определяете a
unit
из DAY_SECOND
, значение
expr
как ожидают, будет иметь дни, часы, минуты, и части
секунд. Если Вы определяете значение как '1:10'
, MySQL предполагает,
что дни и части часов отсутствуют, и значение представляет минуты и секунды. Другими словами, '1:10' DAY_SECOND
интерпретируется таким способом, которому это
эквивалентно '1:10' MINUTE_SECOND
. Это походит на способ, которым
интерпретирует MySQL TIME
значения как представляющий прошедшее время, а не как время
суток.
Поскольку expr
обрабатывается как строка, быть осторожным,
если Вы определяете нестроковое значение с INTERVAL
. Например, со
спецификатором интервала HOUR_MINUTE
, 6/4
оценивает к 1.5000
и обрабатывается как 1 час, 5000 минут:
mysql>SELECT 6/4;
-> 1.5000mysql>SELECT DATE_ADD('2009-01-01', INTERVAL 6/4 HOUR_MINUTE);
-> '2009-01-04 12:20:00'
Чтобы гарантировать интерпретацию интервала оценивают, как Вы ожидаете, a CAST()
работа может использоваться. Обрабатывать 6/4
как 1 час, 5 минут, бросок это к a DECIMAL
значение с единственной дробной цифрой:
mysql>SELECT CAST(6/4 AS DECIMAL(3,1));
-> 1.5mysql>SELECT DATE_ADD('1970-01-01 12:00:00',
->INTERVAL CAST(6/4 AS DECIMAL(3,1)) HOUR_MINUTE);
-> '1970-01-01 13:05:00'
Если Вы добавляете к или вычитаете из даты, оценивают что-то, что содержит часть времени, результат автоматически преобразовывается в значение datetime:
mysql>SELECT DATE_ADD('2013-01-01', INTERVAL 1 DAY);
-> '2013-01-02'mysql>SELECT DATE_ADD('2013-01-01', INTERVAL 1 HOUR);
-> '2013-01-01 01:00:00'
Если Вы добавляете MONTH
, YEAR_MONTH
, или
YEAR
и у получающейся даты есть день, который больше чем максимальный
день в течение нового месяца, день корректируется к максимальным дням в новом месяце:
mysql> SELECT DATE_ADD('2009-01-30',
INTERVAL 1 MONTH);
-> '2009-02-28'
Операции арифметики дат требуют полных дат и не работают с неполными датами такой как '2006-07-00'
или ужасно уродливые даты:
mysql>SELECT DATE_ADD('2006-07-00', INTERVAL 1 DAY);
-> NULLmysql>SELECT '2005-03-32' + INTERVAL 1 MONTH;
-> NULL
Форматы date
значение согласно format
строка.
Следующие спецификаторы могут использоваться в format
строка."%
"символ требуется перед символами спецификатора
формата.
Спецификатор | Описание |
---|---|
%a |
Сокращенное буднее имя (Sun ..Sat )
|
%b |
Сокращенное имя месяца (Jan ..Dec )
|
%c |
Месяц, числовой (0 ..12 ) |
%D |
День месяца с английским суффиксом (0th , 1st , 2nd , 3rd ,
…)
|
%d |
День месяца, числового (00 ..31 )
|
%e |
День месяца, числового (0 ..31 )
|
%f |
Микросекунды (000000 ..999999 )
|
%H |
Час (00 ..23 ) |
%h |
Час (01 ..12 ) |
%I |
Час (01 ..12 ) |
%i |
Минуты, числовые (00 ..59 ) |
%j |
День года (001 ..366 ) |
%k |
Час (0 ..23 ) |
%l |
Час (1 ..12 ) |
%M |
Имя месяца (January ..December )
|
%m |
Месяц, числовой (00 ..12 ) |
%p |
AM или PM |
%r |
Время, 12-часовое (hh:mm:ss сопровождаемый AM или PM )
|
%S |
Секунды (00 ..59 ) |
%s |
Секунды (00 ..59 ) |
%T |
Время, 24-часовое (hh:mm:ss ) |
%U |
Неделя (00 ..53 ), где
воскресенье является первым днем недели
|
%u |
Неделя (00 ..53 ), где
понедельник является первым днем недели
|
%V |
Неделя (01 ..53 ), где
воскресенье является первым днем недели; используемый с %X
|
%v |
Неделя (01 ..53 ), где
понедельник является первым днем недели; используемый с %x
|
%W |
Буднее имя (Sunday ..Saturday )
|
%w |
День недели (0 =Sunday..6 =Saturday)
|
%X |
Год в течение недели, где воскресенье является первым днем недели, числовой, четыре
цифры; используемый с %V |
%x |
Год в течение недели, где понедельник является первым днем недели, числовой, четыре
цифры; используемый с %v |
%Y |
Год, числовой, четыре цифры |
%y |
Год, числовой (две цифры) |
%% |
Литерал"% "символ
|
%
|
x , для любого"x "не
listedabove
|
Диапазоны для спецификаторов месяца и дня начинаются с нуля вследствие того, что MySQL разрешает
хранение неполных дат такой как '2014-00-00'
.
Языком, используемым для имен дня и месяца и сокращений, управляет значение lc_time_names
системная переменная (Раздел
10.7, "MySQL Server Locale Support").
DATE_FORMAT()
возвращает строку с набором символов и сопоставлением, данным character_set_connection
и collation_connection
так, чтобы это могло возвратить имена месяца
и буднего дня, содержащие символы неASCII.
mysql>SELECT DATE_FORMAT('2009-10-04 22:23:00', '%W %M %Y');
-> 'Sunday October 2009'mysql>SELECT DATE_FORMAT('2007-10-04 22:23:00', '%H:%i:%s');
-> '22:23:00'mysql>SELECT DATE_FORMAT('1900-10-04 22:23:00',
->'%D %y %a %d %m %b %j');
-> '4th 00 Thu 04 10 Oct 277'mysql>SELECT DATE_FORMAT('1997-10-04 22:23:00',
->'%H %k %I %r %T %S %w');
-> '22 22 10 10:23:00 PM 22:23:00 00 6'mysql>SELECT DATE_FORMAT('1999-01-01', '%X %V');
-> '1998 52'mysql>SELECT DATE_FORMAT('2006-06-00', '%d');
-> '00'
DATE_SUB(
date
,INTERVAL expr
unit
)
См. описание для DATE_ADD()
.
DAY()
синоним для
DAYOFMONTH()
.
Возвращает имя буднего дня для date
. Языком, используемым
для имени, управляет значение lc_time_names
системная переменная (Раздел
10.7, "MySQL Server Locale Support").
mysql> SELECT
DAYNAME('2007-02-03');
-> 'Saturday'
Возвращает день месяца для date
, в диапазоне 1
к 31
, или 0
для дат такой как '0000-00-00'
или '2008-00-00'
у этого есть часть нулевого дня.
mysql> SELECT
DAYOFMONTH('2007-02-03');
-> 3
Возвращается будний день индексируют для date
(1
= В воскресенье, 2
= В понедельник, …,
7
= В субботу). Они индексируют значения, соответствуют стандарту ODBC.
mysql> SELECT
DAYOFWEEK('2007-02-03');
-> 7
Возвращает день года для date
, в диапазоне 1
к 366
.
mysql> SELECT
DAYOFYEAR('2007-02-03');
-> 34
EXTRACT()
функционируйте использует те же самые виды спецификаторов модуля как DATE_ADD()
или DATE_SUB()
, но извлечения расстаются с датой вместо того, чтобы
выполнить арифметику дат.
mysql>SELECT EXTRACT(YEAR FROM '2009-07-02');
-> 2009mysql>SELECT EXTRACT(YEAR_MONTH FROM '2009-07-02 01:02:03');
-> 200907mysql>SELECT EXTRACT(DAY_MINUTE FROM '2009-07-02 01:02:03');
-> 20102mysql>SELECT EXTRACT(MICROSECOND
->FROM '2003-01-02 10:30:00.000123');
-> 123
Учитывая дневное число N
, возвраты a DATE
значение.
mysql> SELECT
FROM_DAYS(730669);
-> '2007-07-03'
Использовать FROM_DAYS()
с осторожностью в старые даты. Это не предназначается для использования со значениями, которые
предшествуют появлению Григорианского календаря (1582). См. Раздел
12.8, "Что MySQL Calendar Is Used By?".
FROM_UNIXTIME(
, unix_timestamp
)FROM_UNIXTIME(
unix_timestamp
,format
)
Возвращает представление unix_timestamp
параметр как
значение в 'YYYY-MM-DD HH:MM:SS'
или YYYYMMDDHHMMSS
формат, в зависимости от того, используется ли функция в строке или числовом контексте. Значение
выражается в зоне текущего времени. unix_timestamp
внутреннее значение метки времени то, которое производится UNIX_TIMESTAMP()
функция.
Если format
дается, результат форматируется согласно format
строка, которая используется тот же самый путь как
перечислено в записи для DATE_FORMAT()
функция.
mysql>SELECT FROM_UNIXTIME(1196440219);
-> '2007-11-30 10:30:19'mysql>SELECT FROM_UNIXTIME(1196440219) + 0;
-> 20071130103019.000000mysql>SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),
->'%Y %D %M %h:%i:%s %x');
-> '2007 30th November 10:30:59 2007'
Отметьте: Если Вы используете UNIX_TIMESTAMP()
и FROM_UNIXTIME()
преобразовать между TIMESTAMP
значения и значения метки времени Unix, преобразование с
потерями, потому что отображение не является непосредственным в обоих направлениях. Для получения
дополнительной информации см. описание UNIX_TIMESTAMP()
функция.
GET_FORMAT({DATE|TIME|DATETIME},
{'EUR'|'USA'|'JIS'|'ISO'|'INTERNAL'})
Возвращает строку формата. Эта функция полезна в комбинации с DATE_FORMAT()
и STR_TO_DATE()
функции.
Возможные значения для первого и второго результата параметров в нескольких возможных строках
формата (для используемых спецификаторов, см. таблицу в DATE_FORMAT()
функциональное описание). Формат ISO обращается к
ISO 9075, не ISO 8601.
Вызов функции | Результат |
---|---|
GET_FORMAT(DATE,'USA') |
'%m.%d.%Y' |
GET_FORMAT(DATE,'JIS') |
'%Y-%m-%d' |
GET_FORMAT(DATE,'ISO') |
'%Y-%m-%d' |
GET_FORMAT(DATE,'EUR') |
'%d.%m.%Y' |
GET_FORMAT(DATE,'INTERNAL') |
'%Y%m%d' |
GET_FORMAT(DATETIME,'USA') |
'%Y-%m-%d %H.%i.%s' |
GET_FORMAT(DATETIME,'JIS') |
'%Y-%m-%d %H:%i:%s' |
GET_FORMAT(DATETIME,'ISO') |
'%Y-%m-%d %H:%i:%s' |
GET_FORMAT(DATETIME,'EUR') |
'%Y-%m-%d %H.%i.%s' |
GET_FORMAT(DATETIME,'INTERNAL') |
'%Y%m%d%H%i%s' |
GET_FORMAT(TIME,'USA') |
'%h:%i:%s %p' |
GET_FORMAT(TIME,'JIS') |
'%H:%i:%s' |
GET_FORMAT(TIME,'ISO') |
'%H:%i:%s' |
GET_FORMAT(TIME,'EUR') |
'%H.%i.%s' |
GET_FORMAT(TIME,'INTERNAL') |
'%H%i%s' |
TIMESTAMP
может также использоваться в качестве первого параметра GET_FORMAT()
, когда функция возвращает те же самые значения что
касается DATETIME
.
mysql>SELECT DATE_FORMAT('2003-10-03',GET_FORMAT(DATE,'EUR'));
-> '03.10.2003'mysql>SELECT STR_TO_DATE('10.31.2003',GET_FORMAT(DATE,'USA'));
-> '2003-10-31'
Возвращает час для time
. Диапазон возвращаемого значения
0
к 23
для значений времени суток. Однако,
диапазон TIME
значения фактически намного больше, таким образом, HOUR
могут возвращаемые значения, больше чем 23
.
mysql>SELECT HOUR('10:05:03');
-> 10mysql>SELECT HOUR('272:59:59');
-> 272
Берет дату или значение datetime и возвращает соответствующее значение в течение прошлого дня
месяца. Возвраты NULL
если параметр недопустим.
mysql>SELECT LAST_DAY('2003-02-05');
-> '2003-02-28'mysql>SELECT LAST_DAY('2004-02-05');
-> '2004-02-29'mysql>SELECT LAST_DAY('2004-01-01 01:01:01');
-> '2004-01-31'mysql>SELECT LAST_DAY('2003-03-32');
-> NULL
LOCALTIME
и
LOCALTIME()
синонимы для NOW()
.
LOCALTIMESTAMP
, LOCALTIMESTAMP([
fsp
])
LOCALTIMESTAMP
и LOCALTIMESTAMP()
синонимы для NOW()
.
Возвращает дату, данную дневные-летнего значения и год. dayofyear
должно быть больше чем 0, или результат NULL
.
mysql>SELECT MAKEDATE(2011,31), MAKEDATE(2011,32);
-> '2011-01-31', '2011-02-01'mysql>SELECT MAKEDATE(2011,365), MAKEDATE(2014,365);
-> '2011-12-31', '2014-12-31'mysql>SELECT MAKEDATE(2011,0);
-> NULL
Возвращает временную стоимость, вычисленную из hour
, minute
, и second
параметры.
С MySQL 5.6.4, second
у параметра может быть дробная
часть.
mysql> SELECT MAKETIME(12,15,30);
-> '12:15:30'
Возвращает микросекунды со времени или datetime выражения expr
как число в диапазоне от 0
к 999999
.
mysql>SELECT MICROSECOND('12:00:00.123456');
-> 123456mysql>SELECT MICROSECOND('2009-12-31 23:59:59.000010');
-> 10
Возвращает минуту для time
, в диапазоне 0
к 59
.
mysql> SELECT MINUTE('2008-02-03
10:05:03');
-> 5
Возвращает месяц для date
, в диапазоне 1
к 12
на январь до декабря, или 0
для дат такой как '0000-00-00'
или '2008-00-00'
у этого есть нулевая часть месяца.
mysql> SELECT MONTH('2008-02-03');
-> 2
Возвращает полное имя месяца для date
. Языком,
используемым для имени, управляет значение lc_time_names
системная переменная (Раздел
10.7, "MySQL Server Locale Support").
mysql> SELECT
MONTHNAME('2008-02-03');
-> 'February'
Возвращает текущую дату и время как значение в 'YYYY-MM-DD HH:MM:SS'
или YYYYMMDDHHMMSS
формат, в зависимости от того, используется ли
функция в строке или числовом контексте. Значение выражается в зоне текущего времени.
С MySQL 5.6.4, если fsp
параметр дается, чтобы определить
точность долей секунды от 0 до 6, возвращаемое значение включает часть долей секунды этого много
цифр. Прежде 5.6.4, любой параметр игнорируется.
mysql>SELECT NOW();
-> '2007-12-15 23:50:26'mysql>SELECT NOW() + 0;
-> 20071215235026.000000
NOW()
возвращает
постоянное время, которое указывает время, в котором оператор начал выполняться. (В пределах
сохраненной функции или триггера, NOW()
возвращает время, в которое функция или оператор
инициирования начали выполняться.) Это отличается от поведения для SYSDATE()
, который возвращает точное время, в которое это
выполняется.
mysql>SELECT NOW(), SLEEP(2), NOW();
+---------------------+----------+---------------------+| NOW() | SLEEP(2) | NOW() |+---------------------+----------+---------------------+| 2006-04-12 13:47:36 | 0 | 2006-04-12 13:47:36 |+---------------------+----------+---------------------+mysql>SELECT SYSDATE(), SLEEP(2), SYSDATE();
+---------------------+----------+---------------------+| SYSDATE() | SLEEP(2) | SYSDATE() |+---------------------+----------+---------------------+| 2006-04-12 13:47:44 | 0 | 2006-04-12 13:47:46 |+---------------------+----------+---------------------+
Кроме того, SET TIMESTAMP
оператор влияет на значение, возвращенное NOW()
но не SYSDATE()
.
Это означает, что настройки метки времени в двоичном журнале не имеют никакого эффекта на вызовы SYSDATE()
. Установка метки времени к ненулевому значению вызывает
каждый последующий вызов NOW()
возвратить то значение. Установка метки времени, чтобы обнулить отмены этот эффект так, чтобы NOW()
еще
раз возвращает текущую дату и время.
См. описание для SYSDATE()
для дополнительной информации о различиях между двумя функциями.
Добавляет N
месяцы к периоду P
(в формате YYMM
или YYYYMM
). Возвращает значение в формате YYYYMM
. Отметьте что параметр периода P
не значение даты.
mysql> SELECT
PERIOD_ADD(200801,2);
-> 200803
Возвращает число месяцев между периодами P1
и P2
. P1
и P2
должен быть в формате YYMM
или YYYYMM
. Отметьте что параметры периода P1
и P2
не
значения даты.
mysql> SELECT
PERIOD_DIFF(200802,200703);
-> 11
Возвращает четверть года для date
, в диапазоне 1
к 4
.
mysql> SELECT
QUARTER('2008-04-01');
-> 2
Возвращает второе для time
, в диапазоне 0
к 59
.
mysql> SELECT SECOND('10:05:03');
-> 3
Возвраты seconds
параметр, преобразованный в часы, минуты,
и секунды, как a TIME
значение. Диапазон результата ограничивается к тому из TIME
тип данных. Предупреждение происходит, если параметр
соответствует значению вне того диапазона.
mysql>SELECT SEC_TO_TIME(2378);
-> '00:39:38'mysql>SELECT SEC_TO_TIME(2378) + 0;
-> 3938
Это - инверсия DATE_FORMAT()
функция. Это берет строку str
и строка формата format
. STR_TO_DATE()
возвраты a DATETIME
оцените, если строка формата содержит и дату и части
времени, или a DATE
или TIME
оцените, если строка содержит только части времени или дата. Если дата, время, или значение
datetime, извлеченное из str
недопустимо, STR_TO_DATE()
возвраты NULL
и
производит предупреждение.
Сканирования сервера str
попытка соответствовать format
к этому. Строка формата может содержать литеральные
символы и отформатировать начинающиеся спецификаторы %
. Литеральные
символы в format
должен соответствовать буквально в str
. Спецификаторы формата в format
должен соответствовать дату или часть времени в
str
. Для спецификаторов, которые могут использоваться в
format
, см. DATE_FORMAT()
функциональное описание.
mysql>SELECT STR_TO_DATE('01,5,2013','%d,%m,%Y');
-> '2013-05-01'mysql>SELECT STR_TO_DATE('May 1, 2013','%M %d,%Y');
-> '2013-05-01'
Сканирование запускается в начале str
и сбои, если format
как находят, не соответствует. Дополнительные
символы в конце str
игнорируются.
mysql>SELECT STR_TO_DATE('a09:30:17','a%h:%i:%s');
-> '09:30:17'mysql>SELECT STR_TO_DATE('a09:30:17','%h:%i:%s');
-> NULLmysql>SELECT STR_TO_DATE('09:30:17a','%h:%i:%s');
-> '09:30:17'
У неуказанной даты или частей времени есть значение 0 так не полностью определенные значения в str
приведите к результату с некоторыми или всем набором
частей к 0:
mysql>SELECT STR_TO_DATE('abc','abc');
-> '0000-00-00'mysql>SELECT STR_TO_DATE('9','%m');
-> '0000-09-00'mysql>SELECT STR_TO_DATE('9','%s');
-> '00:00:09'
Проверка диапазона на частях значений даты как описывается в Разделе
11.3.1," DATE
, DATETIME
, и TIMESTAMP
Типы". Это означает, например, что "нулевые" даты или даты со значениями
части 0 разрешаются, если режим SQL не устанавливается отвергнуть такие значения.
mysql>SELECT STR_TO_DATE('00/00/0000', '%m/%d/%Y');
-> '0000-00-00'mysql>SELECT STR_TO_DATE('04/31/2004', '%m/%d/%Y');
-> '2004-04-31'
Невозможно использовать формат "%X%V"
преобразовать недельную годом строку в дату, потому что комбинация года и недели не однозначно
определяет год и месяц, если неделя пересекает границу месяца. Чтобы преобразовать недельное
годом в дату, следует также определить будний день:
mysql> SELECT STR_TO_DATE('200442
Monday', '%X%V %W');
-> '2004-10-18'
SUBDATE(
, date
,INTERVAL expr
unit
)SUBDATE(
expr
,days
)
Когда вызвано с INTERVAL
форма второго параметра, SUBDATE()
синоним для DATE_SUB()
. Для получения информации о INTERVAL
unit
параметр, см.
обсуждение для DATE_ADD()
.
mysql>SELECT DATE_SUB('2008-01-02', INTERVAL 31 DAY);
-> '2007-12-02'mysql>SELECT SUBDATE('2008-01-02', INTERVAL 31 DAY);
-> '2007-12-02'
Вторая форма включает использованию целочисленного значения для days
. В таких случаях это интерпретируется как число дней,
которые будут вычтены из даты или datetime выражения expr
.
mysql> SELECT SUBDATE('2008-01-02
12:00:00', 31);
-> '2007-12-02 12:00:00'
SUBTIME()
возвраты expr1
– expr2
выраженный как значение в том же самом формате
как expr1
. expr1
время или datetime выражение, и expr2
выражение времени.
mysql>SELECT SUBTIME('2007-12-31 23:59:59.999999','1 1:1:1.000002');
-> '2007-12-30 22:58:58.999997'mysql>SELECT SUBTIME('01:00:00.999999', '02:00:00.999998');
-> '-00:59:59.999999'
Возвращает текущую дату и время как значение в 'YYYY-MM-DD HH:MM:SS'
или YYYYMMDDHHMMSS
формат, в зависимости от того, используется ли
функция в строке или числовом контексте.
SYSDATE()
возвращает время, в которое это выполняется. Это отличается от поведения для NOW()
, который возвращает постоянное время, которое указывает
время, в котором оператор начал выполняться. (В пределах сохраненной функции или триггера, NOW()
возвращает время, в которое функция или оператор инициирования начали выполняться.)
mysql>SELECT NOW(), SLEEP(2), NOW();
+---------------------+----------+---------------------+| NOW() | SLEEP(2) | NOW() |+---------------------+----------+---------------------+| 2006-04-12 13:47:36 | 0 | 2006-04-12 13:47:36 |+---------------------+----------+---------------------+mysql>SELECT SYSDATE(), SLEEP(2), SYSDATE();
+---------------------+----------+---------------------+| SYSDATE() | SLEEP(2) | SYSDATE() |+---------------------+----------+---------------------+| 2006-04-12 13:47:44 | 0 | 2006-04-12 13:47:46 |+---------------------+----------+---------------------+
Кроме того, SET TIMESTAMP
оператор влияет на значение, возвращенное NOW()
но не SYSDATE()
.
Это означает, что настройки метки времени в двоичном журнале не имеют никакого эффекта на вызовы SYSDATE()
.
Поскольку SYSDATE()
может возвратить различные значения даже в пределах того же
самого оператора, и не влияется SET TIMESTAMP
, это недетерминировано и
поэтому опасно для репликации, если основанное на операторе двоичное журналирование используется.
Если это - проблема, можно использовать основанное на строке журналирование.
Альтернативно, можно использовать --sysdate-is-now
опция, чтобы вызвать SYSDATE()
быть псевдонимом для NOW()
. Это работает, если опция используется и на ведущем устройстве
и на ведомом устройстве.
Недетерминированная природа SYSDATE()
также средство, которое индексирует, не может
использоваться для того, чтобы оценить выражения, которые обращаются к нему.
Извлекает часть времени времени или datetime выражения expr
и возвраты это как строка.
Эта функция опасна для основанной на операторе репликации. В MySQL 5.6 регистрируется
предупреждение, если Вы используете эту функцию когда binlog_format
устанавливается в STATEMENT
. (Ошибка #47995)
mysql>SELECT TIME('2003-12-31 01:02:03');
-> '01:02:03'mysql>SELECT TIME('2003-12-31 01:02:03.000123');
-> '01:02:03.000123'
TIMEDIFF()
возвраты expr1
– expr2
выраженный как временная стоимость. expr1
и expr2
время или выражения "дата и время", но
оба должны иметь тот же самый тип.
Результат, возвращенный TIMEDIFF()
ограничивается учтенным диапазоном
TIME
значения. Альтернативно, можно использовать любую из функций
TIMESTAMPDIFF()
и UNIX_TIMESTAMP()
, оба из которых возвращают целые числа.
mysql>SELECT TIMEDIFF('2000:01:01 00:00:00',
->'2000:01:01 00:00:00.000001');
-> '-00:00:00.000001'mysql>SELECT TIMEDIFF('2008-12-31 23:59:59.000001',
->'2008-12-30 01:01:01.000002');
-> '46:58:57.999999'
TIMESTAMP(
, expr
)TIMESTAMP(
expr1
,expr2
)
С единственным параметром эта функция возвращает дату или datetime выражение expr
как значение datetime. С двумя параметрами это
добавляет выражение времени expr2
к дате или datetime
выражению expr1
и возвращает результат как значение
datetime.
mysql>SELECT TIMESTAMP('2003-12-31');
-> '2003-12-31 00:00:00'mysql>SELECT TIMESTAMP('2003-12-31 12:00:00','12:00:00');
-> '2004-01-01 00:00:00'
TIMESTAMPADD(
unit
,interval
,datetime_expr
)
Добавляет целочисленное выражение interval
к дате или
datetime выражению datetime_expr
. Модуль для interval
дается unit
параметр, который должен быть одним из следующих
значений: MICROSECOND
(микросекунды), SECOND
, MINUTE
, HOUR
,
DAY
, WEEK
, MONTH
, QUARTER
, или YEAR
.
unit
значение может быть определено, используя одно из
ключевых слов как показано, или с префиксом SQL_TSI_
. Например, DAY
и SQL_TSI_DAY
оба являются
законными.
mysql>SELECT TIMESTAMPADD(MINUTE,1,'2003-01-02');
-> '2003-01-02 00:01:00'mysql>SELECT TIMESTAMPADD(WEEK,1,'2003-01-02');
-> '2003-01-09'
TIMESTAMPDIFF(
unit
,datetime_expr1
,datetime_expr2
)
Возвраты datetime_expr2
– datetime_expr1
,
где datetime_expr1
и datetime_expr2
дата или datetime выражения. Одно выражение может быть датой и другим datetime; значение даты
обрабатывается как datetime наличие части времени '00:00:00'
где
необходимый. Модуль для результата (целое число) дается unit
параметр. Юридические значения для unit
то же самое как перечисленные в описании TIMESTAMPADD()
функция.
mysql>SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
-> 3mysql>SELECT TIMESTAMPDIFF(YEAR,'2002-05-01','2001-01-01');
-> -1mysql>SELECT TIMESTAMPDIFF(MINUTE,'2003-02-01','2003-05-01 12:05:55');
-> 128885
Порядок даты или datetime параметров за эту функцию является противоположностью
используемого с TIMESTAMP()
функционируйте когда вызвано с 2 параметрами.
Это используется как DATE_FORMAT()
функция, но format
строка может содержать спецификаторы формата только в течение многих часов, минут, секунд, и
микросекунд. Другие спецификаторы производят a NULL
значение или 0
.
Если time
значение содержит часть часа, которая больше чем
23
, %H
и %k
спецификаторы формата часа производят значение, больше чем обычный диапазон 0..23
.
Другие спецификаторы формата часа производят значение часа по модулю 12.
mysql> SELECT TIME_FORMAT('100:00:00',
'%H %k %h %I %l');
-> '100 100 04 04 4'
Возвраты time
параметр, преобразованный в секунды.
mysql>SELECT TIME_TO_SEC('22:23:00');
-> 80580mysql>SELECT TIME_TO_SEC('00:39:38');
-> 2378
Учитывая дату date
, возвращает дневное число (число дней с
года 0).
mysql>SELECT TO_DAYS(950501);
-> 728779mysql>SELECT TO_DAYS('2007-10-07');
-> 733321
TO_DAYS()
не
предназначается для использования со значениями, которые предшествуют появлению Григорианского
календаря (1582), потому что это не принимает во внимание дни, которые были потеряны, когда
календарь был изменен. Для дат до 1582 (и возможно более поздний год в других локалях), следствия
этой функции не надежны. См. Раздел 12.8, "Что
MySQL Calendar Is Used By?", для деталей.
Помните, что MySQL преобразовывает двухразрядные значения года в датах к четырехразрядной форме,
используя правила в Разделе 11.3, "Дата и Типы Времени".
Например, '2008-10-07'
и '08-10-07'
замечаются как идентичные даты:
mysql> SELECT TO_DAYS('2008-10-07'),
TO_DAYS('08-10-07');
-> 733687, 733687
В MySQL нулевая дата определяется как '0000-00-00'
, даже при том, что
эту дату самостоятельно считают недопустимой. Это означает это, для '0000-00-00'
и '0000-01-01'
, TO_DAYS()
возвращает значения, показанные сюда:
mysql>SELECT TO_DAYS('0000-00-00');
+-----------------------+| to_days('0000-00-00') |+-----------------------+| NULL |+-----------------------+1 row in set, 1 warning (0.00 sec)mysql>SHOW WARNINGS;
+---------+------+----------------------------------------+| Level | Code | Message |+---------+------+----------------------------------------+| Warning | 1292 | Incorrect datetime value: '0000-00-00' |+---------+------+----------------------------------------+1 row in set (0.00 sec)mysql>SELECT TO_DAYS('0000-01-01');
+-----------------------+| to_days('0000-01-01') |+-----------------------+| 1 |+-----------------------+1 row in set (0.00 sec)
Это - истина действительно ли ALLOW_INVALID_DATES
Режим SQL-сервера включается.
Учитывая дату или datetime expr
, возвращает число секунд с
года 0. Если expr
не допустимая дата или значение
datetime, возвраты NULL
.
mysql>SELECT TO_SECONDS(950501);
-> 62966505600mysql>SELECT TO_SECONDS('2009-11-29');
-> 63426672000mysql>SELECT TO_SECONDS('2009-11-29 13:43:32');
-> 63426721412mysql>SELECT TO_SECONDS( NOW() );
-> 63426721458
Как TO_DAYS()
, TO_SECONDS()
не
предназначается для использования со значениями, которые предшествуют появлению Григорианского
календаря (1582), потому что это не принимает во внимание дни, которые были потеряны, когда
календарь был изменен. Для дат до 1582 (и возможно более поздний год в других локалях), следствия
этой функции не надежны. См. Раздел 12.8, "Что
MySQL Calendar Is Used By?", для деталей.
Как TO_DAYS()
, TO_SECONDS()
, преобразовывает
двухразрядные значения года в датах к четырехразрядной форме, используя правила в Разделе
11.3, "Дата и Типы Времени".
В MySQL нулевая дата определяется как '0000-00-00'
, даже при том, что
эту дату самостоятельно считают недопустимой. Это означает это, для '0000-00-00'
и '0000-01-01'
, TO_SECONDS()
возвращает значения, показанные сюда:
mysql>SELECT TO_SECONDS('0000-00-00');
+--------------------------+| TO_SECONDS('0000-00-00') |+--------------------------+| NULL |+--------------------------+1 row in set, 1 warning (0.00 sec)mysql>SHOW WARNINGS;
+---------+------+----------------------------------------+| Level | Code | Message |+---------+------+----------------------------------------+| Warning | 1292 | Incorrect datetime value: '0000-00-00' |+---------+------+----------------------------------------+1 row in set (0.00 sec)mysql>SELECT TO_SECONDS('0000-01-01');
+--------------------------+| TO_SECONDS('0000-01-01') |+--------------------------+| 86400 |+--------------------------+1 row in set (0.00 sec)
Это - истина действительно ли ALLOW_INVALID_DATES
Режим SQL-сервера включается.
UNIX_TIMESTAMP()
, UNIX_TIMESTAMP(
date
)
Если вызвано без параметра, возвращает метку времени Unix (секунды с тех пор '1970-01-01
00:00:00'
UTC) как целое без знака. Если UNIX_TIMESTAMP()
вызывается с a date
параметр, это возвращает значение параметра как
секунды с тех пор '1970-01-01 00:00:00'
UTC. date
может быть a DATE
строка, a DATETIME
строка, a TIMESTAMP
, или число в формате YYMMDD
или YYYYMMDD
. Сервер
интерпретирует date
как значение в зоне текущего времени и
преобразовывает это во внутреннее значение в UTC. Клиенты могут установить свой часовой пояс как
описано в Разделе 10.6, "MySQL Server Time Zone
Support".
mysql>SELECT UNIX_TIMESTAMP();
-> 1196440210mysql>SELECT UNIX_TIMESTAMP('2007-11-30 10:30:19');
-> 1196440219
Когда UNIX_TIMESTAMP()
используется на a TIMESTAMP
столбец, функция возвращает внутреннее значение метки времени непосредственно без неявного преобразования "строка к метке времени Unix". Если Вы передаете дату из диапазона к UNIX_TIMESTAMP()
, это возвращается 0
.
Отметьте: Если Вы используете UNIX_TIMESTAMP()
и FROM_UNIXTIME()
преобразовать между TIMESTAMP
значения и значения метки времени Unix, преобразование с
потерями, потому что отображение не является непосредственным в обоих направлениях. Например, из-за
соглашений для изменений зоны местного времени, это возможно для два UNIX_TIMESTAMP()
отображаться два TIMESTAMP
значения к тому же самому Unix добавляют метку времени
к значению. FROM_UNIXTIME()
отобразит то значение назад на только один из оригинала TIMESTAMP
значения. Вот пример, используя TIMESTAMP
значения в CET
часовой
пояс:
mysql>SELECT UNIX_TIMESTAMP('2005-03-27 03:00:00');
+---------------------------------------+| UNIX_TIMESTAMP('2005-03-27 03:00:00') |+---------------------------------------+| 1111885200 |+---------------------------------------+mysql>SELECT UNIX_TIMESTAMP('2005-03-27 02:00:00');
+---------------------------------------+| UNIX_TIMESTAMP('2005-03-27 02:00:00') |+---------------------------------------+| 1111885200 |+---------------------------------------+mysql>SELECT FROM_UNIXTIME(1111885200);
+---------------------------+| FROM_UNIXTIME(1111885200) |+---------------------------+| 2005-03-27 03:00:00 |+---------------------------+
Если Вы хотите вычесть UNIX_TIMESTAMP()
столбцы, Вы могли бы хотеть бросить результат к
целым числам со знаком. См. Раздел 12.10, "Функции
броска и Операторы".
Возвращает текущую дату UTC как значение в 'YYYY-MM-DD'
или YYYYMMDD
формат, в зависимости от того, используется ли функция в строке
или числовом контексте.
mysql> SELECT UTC_DATE(), UTC_DATE() +
0;
-> '2003-08-14', 20030814
Возвращает текущее время UTC как значение в 'HH:MM:SS'
или HHMMSS
формат, в зависимости от того, используется ли функция в строке
или числовом контексте.
С MySQL 5.6.4, если fsp
параметр дается, чтобы определить
точность долей секунды от 0 до 6, возвращаемое значение включает часть долей секунды этого много
цифр. Прежде 5.6.4, любой параметр игнорируется.
mysql> SELECT UTC_TIME(), UTC_TIME() +
0;
-> '18:07:53', 180753.000000
UTC_TIMESTAMP
,
UTC_TIMESTAMP([
fsp
])
Возвращает текущую дату UTC и время как значение в 'YYYY-MM-DD
HH:MM:SS'
или YYYYMMDDHHMMSS
формат, в зависимости от того,
используется ли функция в строке или числовом контексте.
С MySQL 5.6.4, если fsp
параметр дается, чтобы определить
точность долей секунды от 0 до 6, возвращаемое значение включает часть долей секунды этого много
цифр. Прежде 5.6.4, любой параметр игнорируется.
mysql> SELECT UTC_TIMESTAMP(),
UTC_TIMESTAMP() + 0;
-> '2003-08-14 18:08:04', 20030814180804.000000
Эта функция возвращает недельное число для date
. Форма с
двумя параметрами WEEK()
позволяет Вам определить, запускается ли неделя в
воскресенье или в понедельник и должно ли возвращаемое значение быть в диапазоне от 0
к 53
или от 1
к 53
. Если mode
параметр опускается, значение default_week_format
системная переменная используется. См. Раздел 5.1.4, "Системные Переменные Сервера".
Следующая таблица описывает как mode
работы параметра.
Режим | Первый день недели | Диапазон | Неделя 1 является первой неделей … |
---|---|---|---|
0 | В воскресенье | 0-53 | с воскресеньем в этом году |
1 | В понедельник | 0-53 | больше чем с 3 днями в этом году |
2 | В воскресенье | 1-53 | с воскресеньем в этом году |
3 | В понедельник | 1-53 | больше чем с 3 днями в этом году |
4 | В воскресенье | 0-53 | больше чем с 3 днями в этом году |
5 | В понедельник | 0-53 | с понедельником в этом году |
6 | В воскресенье | 1-53 | больше чем с 3 днями в этом году |
7 | В понедельник | 1-53 | с понедельником в этом году |
mysql>SELECT WEEK('2008-02-20');
-> 7mysql>SELECT WEEK('2008-02-20',0);
-> 7mysql>SELECT WEEK('2008-02-20',1);
-> 8mysql>SELECT WEEK('2008-12-31',1);
-> 53
Отметьте это, если дата падает на прошлой неделе предыдущего года, возвратов MySQL 0
если Вы не используете 2
, 3
, 6
, или 7
как
дополнительное mode
параметр:
mysql> SELECT YEAR('2000-01-01'),
WEEK('2000-01-01',0);
-> 2000, 0
Можно было бы утверждать, что MySQL должен возвратиться 52
для WEEK()
функция, потому что данная дата фактически происходит на 52-ой неделе 1999. Мы решили возвратиться
0
вместо этого, потому что мы хотим, чтобы функция возвратила "недельное число в данном году."
Это использует WEEK()
функция, надежная когда объединено с другими функциями,
которые извлекают часть даты из даты.
Если Вы предпочли бы, чтобы результат был оценен относительно года, который содержит первый день
недели для данной даты, использовать 0
, 2
,
5
, или 7
как дополнительное mode
параметр.
mysql> SELECT
WEEK('2000-01-01',2);
-> 52
Альтернативно, используйте YEARWEEK()
функция:
mysql>SELECT YEARWEEK('2000-01-01');
-> 199952mysql>SELECT MID(YEARWEEK('2000-01-01'),5,2);
-> '52'
Возвращается будний день индексируют для date
(0
= В понедельник, 1
= Во вторник, … 6
= В воскресенье).
mysql>SELECT WEEKDAY('2008-02-03 22:23:00');
-> 6mysql>SELECT WEEKDAY('2007-11-06');
-> 1
Возвращает календарную неделю даты как число в диапазоне от 1
к 53
. WEEKOFYEAR()
функция совместимости, которая эквивалентна WEEK(
. date
,3)
mysql> SELECT
WEEKOFYEAR('2008-02-20');
-> 8
Возвращает год для date
, в диапазоне 1000
к 9999
, или 0
для "нулевой"
даты.
mysql> SELECT YEAR('1987-01-01');
-> 1987
YEARWEEK(
, date
)YEARWEEK(
date
,mode
)
Год возвратов и неделя для даты. mode
параметр работает
точно как mode
параметр WEEK()
. Год в результате может отличаться с года в параметре даты
за первое и прошлая неделя года.
mysql> SELECT
YEARWEEK('1987-01-01');
-> 198653
Отметьте, что недельное число отличается от какой WEEK()
функция возвратилась бы (0
) для
дополнительных параметров 0
или 1
, как WEEK()
тогда возвращает неделю в контексте данного года.