SQL - функции даты
В следующей таблице приведен список всех важных функций, связанных с датой и временем, доступных через SQL. Ваша СУБД поддерживает множество других функций. Данный список основан на СУБД MySQL.
Sr. No. | Описание функции |
---|---|
1 | ДОБАВИТЬ () Добавляет даты |
2 | ДОБАВИТЬ ВРЕМЯ () Добавляет время |
3 | CONVERT_TZ () Преобразует из одного часового пояса в другой |
4 | CURDATE () Возвращает текущую дату |
5 | CURRENT_DATE (), CURRENT_DATE Синонимы для CURDATE () |
6 | CURRENT_TIME (), CURRENT_TIME Синонимы для CURTIME () |
7 | CURRENT_TIMESTAMP (), CURRENT_TIMESTAMP Синонимы к слову СЕЙЧАС () |
8 | CURTIME () Возвращает текущее время |
9 | DATE_ADD () Добавляет две даты |
10 | ФОРМАТ ДАТЫ() Дата форматирования, как указано |
11 | DATE_SUB () Вычитает две даты |
12 | СВИДАНИЕ() Извлекает часть даты из выражения даты или даты и времени |
13 | РАЗНДАТ () Вычитает две даты |
14 | ДЕНЬ() Синоним для DAYOFMONTH () |
15 | ДЕНЬ () Возвращает название дня недели |
16 | DAYOFMONTH () Возвращает день месяца (1-31). |
17 | ДЕНЬ НЕДЕЛИ() Возвращает индекс дня недели аргумента. |
18 | DAYOFYEAR () Возвращает день года (1-366). |
19 | ВЫДЕРЖКА Извлекает часть даты |
20 | FROM_DAYS () Преобразует номер дня в дату |
21 год | FROM_UNIXTIME () Форматирует дату как временную метку UNIX |
22 | ЧАС() Извлекает час |
23 | ПОСЛЕДНИЙ ДЕНЬ Возвращает последний день месяца для аргумента. |
24 | МЕСТНОЕ ВРЕМЯ (), МЕСТНОЕ ВРЕМЯ Синоним СЕЙЧАС () |
25 | LOCALTIMESTAMP, LOCALTIMESTAMP () Синоним СЕЙЧАС () |
26 | СОЗДАТЬ () Создает дату из года и дня года |
27 | MAKETIME MAKETIME () |
28 | МИКРОСЕКУНДА () Возвращает микросекунды из аргумента. |
29 | МИНУТА () Возвращает минуту из аргумента. |
30 | МЕСЯЦ() Вернуть месяц с прошедшей даты |
31 год | MONTHNAME () Возвращает название месяца |
32 | В НАСТОЯЩЕЕ ВРЕМЯ() Возвращает текущую дату и время |
33 | PERIOD_ADD () Добавляет период к году-месяцу |
34 | PERIOD_DIFF () Возвращает количество месяцев между периодами. |
35 год | КВАРТАЛ () Возвращает квартал из аргумента даты |
36 | SEC_TO_TIME () Преобразует секунды в формат "ЧЧ: ММ: СС" |
37 | ВТОРОЙ () Возвращает второй (0-59) |
38 | STR_TO_DATE () Преобразует строку в дату |
39 | СУБДАТА () При вызове с тремя аргументами синоним DATE_SUB () |
40 | SUBTIME () Вычитает время |
41 год | SYSDATE () Возвращает время, в которое функция выполняется. |
42 | TIME_FORMAT () Форматы как время |
43 | TIME_TO_SEC () Возвращает аргумент, преобразованный в секунды. |
44 | ВРЕМЯ() Извлекает временную часть переданного выражения |
45 | TIMEDIFF () Вычитает время |
46 | TIMESTAMP () С одним аргументом эта функция возвращает дату или выражение даты и времени. С двумя аргументами сумма аргументов |
47 | TIMESTAMPADD () Добавляет интервал в выражение даты и времени |
48 | TIMESTAMPDIFF () Вычитает интервал из выражения datetime |
49 | TO_DAYS () Возвращает аргумент даты, преобразованный в дни |
50 | UNIX_TIMESTAMP () Возвращает отметку времени UNIX |
51 | UTC_DATE () Возвращает текущую дату в формате UTC. |
52 | UTC_TIME () Возвращает текущее время в формате UTC. |
53 | UTC_TIMESTAMP () Возвращает текущую дату и время в формате UTC. |
54 | НЕДЕЛЮ() Возвращает номер недели |
55 | WEEKDAY () Возвращает индекс дня недели. |
56 | WEEKOFYEAR () Возвращает календарную неделю даты (1-53). |
57 | ГОД() Возвращает год |
58 | ГОД () Возвращает год и неделю |
ДОБАВИТЬ (дата; ИНТЕРВАЛ единица выражения), ДОБАВИТЬ (выражение; дни)
При вызове с формой ИНТЕРВАЛ второго аргумента ADDDATE () является синонимом DATE_ADD (). Связанная функция SUBDATE () является синонимом DATE_SUB (). Для получения информации об аргументе блока INTERVAL см. Обсуждение DATE_ADD ().
mysql> SELECT DATE_ADD('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| DATE_ADD('1998-01-02', INTERVAL 31 DAY) |
+---------------------------------------------------------+
| 1998-02-02 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT ADDDATE('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| ADDDATE('1998-01-02', INTERVAL 31 DAY) |
+---------------------------------------------------------+
| 1998-02-02 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
При вызове с формой days второго аргумента MySQL обрабатывает его как целое число дней, которое нужно добавить к expr.
mysql> SELECT ADDDATE('1998-01-02', 31);
+---------------------------------------------------------+
| DATE_ADD('1998-01-02', INTERVAL 31 DAY) |
+---------------------------------------------------------+
| 1998-02-02 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
ДОБАВИТЬ ВРЕМЯ (выражение1; выражение2)
ADDTIME () добавляет expr2 к expr1 и возвращает результат. Expr1 - это выражение времени или даты и времени, а expr2 - это выражение времени.
mysql> SELECT ADDTIME('1997-12-31 23:59:59.999999','1 1:1:1.000002');
+---------------------------------------------------------+
| DATE_ADD('1997-12-31 23:59:59.999999','1 1:1:1.000002') |
+---------------------------------------------------------+
| 1998-01-02 01:01:01.000001 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
CONVERT_TZ (dt, from_tz, to_tz)
Это преобразует значение datetime dt из часового пояса, заданного from_tz, в часовой пояс, заданного to_tz, и возвращает полученное значение. Эта функция возвращает NULL, если аргументы недопустимы.
mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
+---------------------------------------------------------+
| CONVERT_TZ('2004-01-01 12:00:00','GMT','MET') |
+---------------------------------------------------------+
| 2004-01-01 13:00:00 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00');
+---------------------------------------------------------+
| CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00') |
+---------------------------------------------------------+
| 2004-01-01 22:00:00 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
CURDATE ()
Возвращает текущую дату в виде значения в формате «ГГГГ-ММ-ДД» или ГГГГММДД, в зависимости от того, используется ли функция в строке или в числовом контексте.
mysql> SELECT CURDATE();
+---------------------------------------------------------+
| CURDATE() |
+---------------------------------------------------------+
| 1997-12-15 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT CURDATE() + 0;
+---------------------------------------------------------+
| CURDATE() + 0 |
+---------------------------------------------------------+
| 19971215 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
CURRENT_DATE и CURRENT_DATE ()
CURRENT_DATE и CURRENT_DATE () являются синонимами CURDATE ()
CURTIME ()
Возвращает текущее время в виде значения в формате «ЧЧ: ММ: СС» или ЧЧММСС, в зависимости от того, используется ли функция в строке или в числовом контексте. Значение выражается в текущем часовом поясе.
mysql> SELECT CURTIME();
+---------------------------------------------------------+
| CURTIME() |
+---------------------------------------------------------+
| 23:50:26 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT CURTIME() + 0;
+---------------------------------------------------------+
| CURTIME() + 0 |
+---------------------------------------------------------+
| 235026 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
CURRENT_TIME и CURRENT_TIME ()
CURRENT_TIME и CURRENT_TIME () являются синонимами CURTIME ().
CURRENT_TIMESTAMP и CURRENT_TIMESTAMP ()
CURRENT_TIMESTAMP и CURRENT_TIMESTAMP () являются синонимами NOW ().
ДАТА (выражение)
Извлекает часть даты из выражения даты или даты и времени expr.
mysql> SELECT DATE('2003-12-31 01:02:03');
+---------------------------------------------------------+
| DATE('2003-12-31 01:02:03') |
+---------------------------------------------------------+
| 2003-12-31 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
РАЗНДАТ (выражение1; выражение2)
DATEDIFF () возвращает expr1. expr2, выраженное как значение в днях от одной даты до другой. И expr1, и expr2 являются выражениями даты или даты и времени. В расчетах используются только части значений даты.
mysql> SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
+---------------------------------------------------------+
| DATEDIFF('1997-12-31 23:59:59','1997-12-30') |
+---------------------------------------------------------+
| 1 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
DATE_ADD (дата, ИНТЕРВАЛ единица выражения), DATE_SUB (дата, ИНТЕРВАЛ единица выражения)
Эти функции выполняют арифметику даты. Вdate- значение DATETIME или DATE, определяющее начальную дату. Вexpr- выражение, определяющее значение интервала, которое будет добавлено или вычтено из начальной даты. Выражение - это строка; он может начинаться с «-» для отрицательных интервалов.
А unit - ключевое слово, указывающее единицы измерения, в которых следует интерпретировать выражение.
В INTERVAL ключевое слово и спецификатор единицы измерения не чувствительны к регистру.
В следующей таблице показана ожидаемая форма аргумента expr для каждого значения единицы измерения.
стоимость единицы | Ожидаемый exprFormat |
---|---|
МИКРОСЕКУНДА | МИКРОСЕКУНД |
ВТОРОЙ | СЕКУНДЫ |
МИНУТА | МИНУТЫ |
ЧАС | ЧАСЫ |
ДЕНЬ | ДНЕЙ |
НЕДЕЛЮ | НЕДЕЛИ |
МЕСЯЦ | МЕСЯЦЫ |
КВАРТАЛ | КВАРТАЛА |
ГОД | Лет |
SECOND_MICROSECOND | "СЕКУНДЫ. МИКРОСЕСКУНДЫ" |
MINUTE_MICROSECOND | "МИНУТЫ.МИКРОСЕСКУНДЫ" |
MINUTE_SECOND | "МИНУТЫ: СЕКУНДЫ" |
HOUR_MICROSECOND | 'ЧАСЫ.МИКРОСЕСКУНДЫ' |
HOUR_SECOND | "ЧАСЫ: МИНУТЫ: СЕКУНДЫ" |
HOUR_MINUTE | "ЧАСЫ: МИНУТЫ" |
DAY_MICROSECOND | "ДНИ. МИКРОСЕСКУНДЫ" |
DAY_SECOND | "ДНИ ЧАСЫ: МИНУТЫ: СЕКУНДЫ" |
DAY_MINUTE | "ДНИ ЧАСЫ: МИНУТЫ" |
DAY_HOUR | "ДНИ ЧАСЫ" |
ГОД МЕСЯЦ | "ГОДЫ-МЕСЯЦЫ" |
Ценности QUARTER и WEEKдоступны из MySQL 5.0.0. версия.
mysql> SELECT DATE_ADD('1997-12-31 23:59:59',
-> INTERVAL '1:1' MINUTE_SECOND);
+---------------------------------------------------------+
| DATE_ADD('1997-12-31 23:59:59', INTERVAL... |
+---------------------------------------------------------+
| 1998-01-01 00:01:00 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1 HOUR);
+---------------------------------------------------------+
| DATE_ADD('1999-01-01', INTERVAL 1 HOUR) |
+---------------------------------------------------------+
| 1999-01-01 01:00:00 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
DATE_FORMAT (дата, формат)
Эта команда форматирует значение даты в соответствии со строкой формата.
В строке формата могут использоваться следующие спецификаторы. Символ «%» требуется перед символами спецификатора формата.
Sr. No. | Спецификатор и описание |
---|---|
1 | %a Сокращенное название дня недели (Вс..Сб) |
2 | %b Сокращенное название месяца (янв .. дек) |
3 | %c Месяц, числовой (0..12) |
4 | %D День месяца с английским суффиксом (0, 1, 2, 3,.) |
5 | %d День месяца, числовой (00..31) |
6 | %e День месяца, числовой (0..31) |
7 | %f Микросекунды (000000..999999) |
8 | %H Час (00..23) |
9 | %h Час (01..12) |
10 | %I Час (01..12) |
11 | %i Минуты, числовые (00..59) |
12 | %j День года (001..366) |
13 | %k Час (0..23) |
14 | %l Час (1..12) |
15 | %M Название месяца (январь.. декабрь) |
16 | %m Месяц, числовой (00..12) |
17 | %p До или после полудня |
18 | %r Время, 12 часов (чч: мм: сс с последующим AM или PM) |
19 | %S Секунды (00..59) |
20 | %s Секунды (00..59) |
21 год | %T Время, 24 часа (чч: мм: сс) |
22 | %U Неделя (00..53), где воскресенье - первый день недели. |
23 | %u Неделя (00..53), где понедельник - первый день недели. |
24 | %V Неделя (01..53), где воскресенье - первый день недели; используется с% X |
25 | %v Неделя (01..53), где понедельник - первый день недели; используется с% x |
26 | %W Название дня недели (воскресенье ... суббота) |
27 | %w День недели (0 = воскресенье..6 = суббота) |
28 | %X Год недели, где воскресенье - первый день недели, числовое, четырехзначное; используется с% V |
29 | %x Год недели, где понедельник - первый день недели, числовой, четырехзначный; используется с% v |
30 | %Y Год, числовое, четыре цифры |
31 год | %y Год, числовой (две цифры) |
32 | %% Буквальный.%. персонаж |
33 | %x x для любого.x. не указано выше |
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
+---------------------------------------------------------+
| DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y') |
+---------------------------------------------------------+
| Saturday October 1997 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00'
-> '%H %k %I %r %T %S %w');
+---------------------------------------------------------+
| DATE_FORMAT('1997-10-04 22:23:00....... |
+---------------------------------------------------------+
| 22 22 10 10:23:00 PM 22:23:00 00 6 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
DATE_SUB (дата; ИНТЕРВАЛЬНАЯ единица выражения)
Это похоже на функцию DATE_ADD ().
ДЕНЬ (дата)
DAY () является синонимом функции DAYOFMONTH ().
ДЕНЬ (дата)
Возвращает название дня недели для даты.
mysql> SELECT DAYNAME('1998-02-05');
+---------------------------------------------------------+
| DAYNAME('1998-02-05') |
+---------------------------------------------------------+
| Thursday |
+---------------------------------------------------------+
1 row in set (0.00 sec)
DAYOFMONTH (дата)
Возвращает день месяца для date в диапазоне от 0 до 31.
mysql> SELECT DAYOFMONTH('1998-02-03');
+---------------------------------------------------------+
| DAYOFMONTH('1998-02-03') |
+---------------------------------------------------------+
| 3 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
DAYOFWEEK (дата)
Возвращает индекс дня недели для даты (1 = воскресенье, 2 = понедельник,., 7 = суббота). Эти значения индекса соответствуют стандарту ODBC.
mysql> SELECT DAYOFWEEK('1998-02-03');
+---------------------------------------------------------+
|DAYOFWEEK('1998-02-03') |
+---------------------------------------------------------+
| 3 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
DAYOFYEAR (дата)
Возвращает день года для date в диапазоне от 1 до 366.
mysql> SELECT DAYOFYEAR('1998-02-03');
+---------------------------------------------------------+
| DAYOFYEAR('1998-02-03') |
+---------------------------------------------------------+
| 34 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
ВЫПИСКА (единица ОТ даты)
Функция EXTRACT () использует те же типы спецификаторов единиц, что и DATE_ADD () или DATE_SUB (), но извлекает части из даты, а не выполняет арифметические операции с датой.
mysql> SELECT EXTRACT(YEAR FROM '1999-07-02');
+---------------------------------------------------------+
| EXTRACT(YEAR FROM '1999-07-02') |
+---------------------------------------------------------+
| 1999 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT EXTRACT(YEAR_MONTH FROM '1999-07-02 01:02:03');
+---------------------------------------------------------+
| EXTRACT(YEAR_MONTH FROM '1999-07-02 01:02:03') |
+---------------------------------------------------------+
| 199907 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
FROM_DAYS (N)
Учитывая номер дня N, возвращает значение DATE.
mysql> SELECT FROM_DAYS(729669);
+---------------------------------------------------------+
| FROM_DAYS(729669) |
+---------------------------------------------------------+
| 1997-10-07 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
Note- Используйте FROM_DAYS () с осторожностью в старых датах. Он не предназначен для использования со значениями, предшествующими появлению григорианского календаря (1582 г.).
FROM_UNIXTIME (unix_timestamp)
FROM_UNIXTIME (unix_timestamp, формат)
Возвращает представление unix_timestampаргумент в виде значения в формате 'ГГГГ-ММ-ДД ЧЧ: ММ: СС или ГГГГММДДЧЧММСС, в зависимости от того, используется ли функция в строковом или числовом контексте. Значение выражается в текущем часовом поясе. Аргумент unix_timestamp - это значения внутренней метки времени, которые производятсяUNIX_TIMESTAMP() функция.
Если задан формат, результат форматируется в соответствии со строкой формата, которая используется таким же образом, как указано в записи для DATE_FORMAT() функция.
mysql> SELECT FROM_UNIXTIME(875996580);
+---------------------------------------------------------+
| FROM_UNIXTIME(875996580) |
+---------------------------------------------------------+
| 1997-10-04 22:23:00 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
ЧАС (время)
Возвращает час для времени. Диапазон возвращаемого значения от 0 до 23 для значений времени суток. Однако диапазон значений TIME на самом деле намного больше, поэтому HOUR может возвращать значения больше 23.
mysql> SELECT HOUR('10:05:03');
+---------------------------------------------------------+
| HOUR('10:05:03') |
+---------------------------------------------------------+
| 10 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
LAST_DAY (дата)
Принимает значение даты или даты и времени и возвращает соответствующее значение для последнего дня месяца. Возвращает NULL, если аргумент недопустим.
mysql> SELECT LAST_DAY('2003-02-05');
+---------------------------------------------------------+
| LAST_DAY('2003-02-05') |
+---------------------------------------------------------+
| 2003-02-28 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
МЕСТНОЕ ВРЕМЯ и МЕСТНОЕ ВРЕМЯ ()
LOCALTIME и LOCALTIME () являются синонимами NOW ().
LOCALTIMESTAMP и LOCALTIMESTAMP ()
LOCALTIMESTAMP и LOCALTIMESTAMP () являются синонимами NOW ().
СОЗДАТЬ (год, день, год)
Возвращает дату с заданными значениями года и дня года. Значение dayofyear должно быть больше 0, иначе результат будет NULL.
mysql> SELECT MAKEDATE(2001,31), MAKEDATE(2001,32);
+---------------------------------------------------------+
| MAKEDATE(2001,31), MAKEDATE(2001,32) |
+---------------------------------------------------------+
| '2001-01-31', '2001-02-01' |
+---------------------------------------------------------+
1 row in set (0.00 sec)
MAKETIME (час, минута, секунда)
Возвращает значение времени, рассчитанное на основе аргументов часа, минуты и секунды.
mysql> SELECT MAKETIME(12,15,30);
+---------------------------------------------------------+
| MAKETIME(12,15,30) |
+---------------------------------------------------------+
| '12:15:30' |
+---------------------------------------------------------+
1 row in set (0.00 sec)
МИКРОСЕКУНДА (выражение)
Возвращает микросекунды из выражения времени или даты и времени (expr) в виде числа в диапазоне от 0 до 999999.
mysql> SELECT MICROSECOND('12:00:00.123456');
+---------------------------------------------------------+
| MICROSECOND('12:00:00.123456') |
+---------------------------------------------------------+
| 123456 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
МИНУТА (время)
Возвращает минуты для времени в диапазоне от 0 до 59.
mysql> SELECT MINUTE('98-02-03 10:05:03');
+---------------------------------------------------------+
| MINUTE('98-02-03 10:05:03') |
+---------------------------------------------------------+
| 5 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
МЕСЯЦ (дата)
Возвращает месяц для даты в диапазоне от 0 до 12.
mysql> SELECT MONTH('1998-02-03')
+---------------------------------------------------------+
| MONTH('1998-02-03') |
+---------------------------------------------------------+
| 2 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
MONTHNAME (дата)
Возвращает полное название месяца для даты.
mysql> SELECT MONTHNAME('1998-02-05');
+---------------------------------------------------------+
| MONTHNAME('1998-02-05') |
+---------------------------------------------------------+
| February |
+---------------------------------------------------------+
1 row in set (0.00 sec)
В НАСТОЯЩЕЕ ВРЕМЯ()
Возвращает текущую дату и время как значение в формате «ГГГГ-ММ-ДД ЧЧ: ММ: СС» или ГГГГММДДЧЧММСС, в зависимости от того, используется ли функция в строковом или числовом контексте. Это значение выражается в текущем часовом поясе.
mysql> SELECT NOW();
+---------------------------------------------------------+
| NOW() |
+---------------------------------------------------------+
| 1997-12-15 23:50:26 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
PERIOD_ADD (P; N)
Добавляет N месяцев к периоду P (в формате ГГГГММ или ГГГГММ). Возвращает значение в формате ГГГГММ. Обратите внимание, что аргумент периода P не является значением даты.
mysql> SELECT PERIOD_ADD(9801,2);
+---------------------------------------------------------+
| PERIOD_ADD(9801,2) |
+---------------------------------------------------------+
| 199803 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
PERIOD_DIFF (P1; P2)
Возвращает количество месяцев между периодами P1 и P2. Эти периоды P1 и P2 должны быть в формате YYMM или YYYYMM. Обратите внимание, что аргументы периода P1 и P2 не являются значениями даты.
mysql> SELECT PERIOD_DIFF(9802,199703);
+---------------------------------------------------------+
| PERIOD_DIFF(9802,199703) |
+---------------------------------------------------------+
| 11 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
КВАРТАЛ (дата)
Возвращает квартал года для даты в диапазоне от 1 до 4.
mysql> SELECT QUARTER('98-04-01');
+---------------------------------------------------------+
| QUARTER('98-04-01') |
+---------------------------------------------------------+
| 2 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
Второй раз)
Возвращает секунду для времени в диапазоне от 0 до 59.
mysql> SELECT SECOND('10:05:03');
+---------------------------------------------------------+
| SECOND('10:05:03') |
+---------------------------------------------------------+
| 3 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
SEC_TO_TIME (секунды)
Возвращает аргумент секунд, преобразованный в часы, минуты и секунды, как значение в формате «ЧЧ: ММ: СС» или ЧЧММСС, в зависимости от того, используется ли функция в строковом или числовом контексте.
mysql> SELECT SEC_TO_TIME(2378);
+---------------------------------------------------------+
| SEC_TO_TIME(2378) |
+---------------------------------------------------------+
| 00:39:38 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
STR_TO_DATE (строка, формат)
Это функция, обратная функции DATE_FORMAT (). Он принимает строку str и формат строки формата. Функция STR_TO_DATE () возвращает значение DATETIME, если строка формата содержит и дату, и время. В противном случае он возвращает значение DATE или TIME, если строка содержит только части даты или времени.
mysql> SELECT STR_TO_DATE('04/31/2004', '%m/%d/%Y');
+---------------------------------------------------------+
| STR_TO_DATE('04/31/2004', '%m/%d/%Y') |
+---------------------------------------------------------+
| 2004-04-31 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
SUBDATE (дата, ИНТЕРВАЛ единица выражения) и SUBDATE (выражение, дни)
При вызове с формой INTERVAL второго аргумента SUBDATE () является синонимом DATE_SUB (). Для получения информации об аргументе блока INTERVAL см. Обсуждение DATE_ADD ().
mysql> SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| DATE_SUB('1998-01-02', INTERVAL 31 DAY) |
+---------------------------------------------------------+
| 1997-12-02 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT SUBDATE('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| SUBDATE('1998-01-02', INTERVAL 31 DAY) |
+---------------------------------------------------------+
| 1997-12-02 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
SUBTIME (expr1, expr2)
Функция SUBTIME () возвращает expr1. expr2 выражается как значение в том же формате, что и expr1. Значение expr1 - это время или выражение типа datetime, а значение expr2 - это выражение времени.
mysql> SELECT SUBTIME('1997-12-31 23:59:59.999999',
-> '1 1:1:1.000002');
+---------------------------------------------------------+
| SUBTIME('1997-12-31 23:59:59.999999'... |
+---------------------------------------------------------+
| 1997-12-30 22:58:58.999997 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
SYSDATE ()
Возвращает текущую дату и время как значение в формате «ГГГГ-ММ-ДД ЧЧ: ММ: СС» или ГГГГММДДЧЧММСС, в зависимости от того, используется ли функция в строковом или числовом контексте.
mysql> SELECT SYSDATE();
+---------------------------------------------------------+
| SYSDATE() |
+---------------------------------------------------------+
| 2006-04-12 13:47:44 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
ВРЕМЯ (выражение)
Извлекает временную часть выражения времени или даты и времени expr и возвращает его как строку.
mysql> SELECT TIME('2003-12-31 01:02:03');
+---------------------------------------------------------+
| TIME('2003-12-31 01:02:03') |
+---------------------------------------------------------+
| 01:02:03 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TIMEDIFF (выражение1; выражение2)
Функция TIMEDIFF () возвращает выражение expr1. expr2, выраженное как значение времени. Эти значения expr1 и expr2 являются выражениями времени или даты и времени, но оба должны быть одного типа.
mysql> SELECT TIMEDIFF('1997-12-31 23:59:59.000001',
-> '1997-12-30 01:01:01.000002');
+---------------------------------------------------------+
| TIMEDIFF('1997-12-31 23:59:59.000001'..... |
+---------------------------------------------------------+
| 46:58:57.999999 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TIMESTAMP (expr), TIMESTAMP (expr1, expr2)
С одним аргументом эта функция возвращает дату или выражение datetime expr как значение datetime. С двумя аргументами он добавляет выражение времени expr2 к выражению даты или даты и времени.expr1 и возвращает результат в виде значения даты и времени.
mysql> SELECT TIMESTAMP('2003-12-31');
+---------------------------------------------------------+
| TIMESTAMP('2003-12-31') |
+---------------------------------------------------------+
| 2003-12-31 00:00:00 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TIMESTAMPADD (единица измерения; интервал; выражение_датывремени)
Эта функция добавляет интервал целочисленного выражения к выражению даты или даты и времени. datetime_expr. Единица измерения интервала задается аргументом единицы измерения, который должен быть одним из следующих значений:
- FRAC_SECOND
- ВТОРАЯ, МИНУТА
- ЧАС, ДЕНЬ
- WEEK
- MONTH
- КВАРТАЛ или
- YEAR
Единица измерения может быть указана с использованием одного из ключевых слов, как показано, или с префиксом SQL_TSI_.
Например, DAY и SQL_TSI_DAY допустимы.
mysql> SELECT TIMESTAMPADD(MINUTE,1,'2003-01-02');
+---------------------------------------------------------+
| TIMESTAMPADD(MINUTE,1,'2003-01-02') |
+---------------------------------------------------------+
| 2003-01-02 00:01:00 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TIMESTAMPDIFF (единица измерения; выражение_датывремени1; выражение_датвремени2)
Возвращает целочисленную разницу между выражениями date или datetime datetime_expr1 и datetime_expr2. Единица измерения результата задается аргументом unit. Допустимые значения для единицы такие же, как и те, что указаны в описании функции TIMESTAMPADD ().
mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
+---------------------------------------------------------+
| TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01') |
+---------------------------------------------------------+
| 3 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TIME_FORMAT (время, формат)
Эта функция используется так же, как функция DATE_FORMAT (), но строка формата может содержать спецификаторы формата только для часов, минут и секунд.
Если значение времени содержит часовую часть больше 23,%H и %k Спецификаторы формата часа создают значение, превышающее обычный диапазон от 0 до 23. Другие описатели формата часа создают значение часа по модулю 12.
mysql> SELECT TIME_FORMAT('100:00:00', '%H %k %h %I %l');
+---------------------------------------------------------+
| TIME_FORMAT('100:00:00', '%H %k %h %I %l') |
+---------------------------------------------------------+
| 100 100 04 04 4 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
TIME_TO_SEC (время)
Возвращает аргумент времени, преобразованный в секунды.
mysql> SELECT TIME_TO_SEC('22:23:00');
+---------------------------------------------------------+
| TIME_TO_SEC('22:23:00') |
+---------------------------------------------------------+
| 80580 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
Сегодняшняя дата)
Для даты возвращает номер дня (количество дней с 0 года).
mysql> SELECT TO_DAYS(950501);
+---------------------------------------------------------+
| TO_DAYS(950501) |
+---------------------------------------------------------+
| 728779 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
UNIX_TIMESTAMP (), UNIX_TIMESTAMP (дата)
Если вызывается без аргументов, эта функция возвращает метку времени Unix (секунды с '1970-01-01 00:00:00' UTC) как целое число без знака. Если UNIX_TIMESTAMP () вызывается с аргументом даты, он возвращает значение аргумента в секундах после '1970-01-01 00:00:00' UTC. Дата может быть строкой DATE, строкой DATETIME, TIMESTAMP или числом в формате YYMMDD или YYYYMMDD.
mysql> SELECT UNIX_TIMESTAMP();
+---------------------------------------------------------+
| UNIX_TIMESTAMP() |
+---------------------------------------------------------+
| 882226357 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00');
+---------------------------------------------------------+
| UNIX_TIMESTAMP('1997-10-04 22:23:00') |
+---------------------------------------------------------+
| 875996580 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
UTC_DATE, UTC_DATE ()
Возвращает текущую дату в формате UTC в виде значения в формате «ГГГГ-ММ-ДД» или ГГГГММДД, в зависимости от того, используется ли функция в строковом или числовом контексте.
mysql> SELECT UTC_DATE(), UTC_DATE() + 0;
+---------------------------------------------------------+
| UTC_DATE(), UTC_DATE() + 0 |
+---------------------------------------------------------+
| 2003-08-14, 20030814 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
UTC_TIME, UTC_TIME ()
Возвращает текущее время в формате UTC в виде значения в формате «ЧЧ: ММ: СС» или ЧЧММСС, в зависимости от того, используется ли функция в строковом или числовом контексте.
mysql> SELECT UTC_TIME(), UTC_TIME() + 0;
+---------------------------------------------------------+
| UTC_TIME(), UTC_TIME() + 0 |
+---------------------------------------------------------+
| 18:07:53, 180753 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
UTC_TIMESTAMP, UTC_TIMESTAMP ()
Возвращает текущую дату и время в формате UTC в виде значения в формате «ГГГГ-ММ-ДД ЧЧ: ММ: СС» или в формате ГГГГММДДЧЧММСС, в зависимости от того, используется ли функция в строке или в числовом контексте.
mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;
+---------------------------------------------------------+
| UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0 |
+---------------------------------------------------------+
| 2003-08-14 18:08:04, 20030814180804 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
НЕДЕЛЯ (дата [, режим])
Эта функция возвращает номер недели для даты. Форма WEEK () с двумя аргументами позволяет указать, начинается ли неделя с воскресенья или понедельника и должно ли возвращаемое значение находиться в диапазоне от 0 до 53 или от 1 до 53. Если аргумент режима опущен, используется значение системной переменной default_week_format
Режим | Первый день недели | Спектр | Неделя 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('1998-02-20');
+---------------------------------------------------------+
| WEEK('1998-02-20') |
+---------------------------------------------------------+
| 7 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
WEEKDAY (дата)
Возвращает индекс дня недели для даты (0 = понедельник, 1 = вторник,. 6 = воскресенье).
mysql> SELECT WEEKDAY('1998-02-03 22:23:00');
+---------------------------------------------------------+
| WEEKDAY('1998-02-03 22:23:00') |
+---------------------------------------------------------+
| 1 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
WEEKOFYEAR (дата)
Возвращает календарную неделю даты как число в диапазоне от 1 до 53. WEEKOFYEAR () - это функция совместимости, эквивалентная WEEK (date, 3).
mysql> SELECT WEEKOFYEAR('1998-02-20');
+---------------------------------------------------------+
| WEEKOFYEAR('1998-02-20') |
+---------------------------------------------------------+
| 8 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
ГОД (дата)
Возвращает год для даты в диапазоне от 1000 до 9999 или 0 для нуля. свидание.
mysql> SELECT YEAR('98-02-03');
+---------------------------------------------------------+
| YEAR('98-02-03') |
+---------------------------------------------------------+
| 1998 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
YEARWEEK (дата), YEARWEEK (дата, режим)
Возвращает год и неделю для даты. Аргумент режима работает точно так же, как аргумент режима функции WEEK (). Год в результате может отличаться от года в аргументе даты для первой и последней недели года.
mysql> SELECT YEARWEEK('1987-01-01');
+---------------------------------------------------------+
| YEAR('98-02-03')YEARWEEK('1987-01-01') |
+---------------------------------------------------------+
| 198653 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
Note - Номер недели отличается от того, что функция WEEK () вернет (0) для необязательных аргументов 0 или 1, поскольку WEEK () затем возвращает неделю в контексте данного года.