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 () затем возвращает неделю в контексте данного года.