Учебники

SQL — функции даты

В следующей таблице приведен список всех важных функций, связанных с датой и временем, доступных через SQL. Существуют различные другие функции, поддерживаемые вашей СУБД. Данный список основан на СУБД MySQL.

Sr.No. Описание функции
1 ADDDATE ()

Добавляет даты

2 AddTime ()

Добавляет время

3 CONVERT_TZ ()

Преобразование из одного часового пояса в другой

4 CURDATE ()

Возвращает текущую дату

5 CURRENT_DATE (), CURRENT_DATE

Синонимов для CURDATE ()

6 CURRENT_TIME (), CURRENT_TIME

Синонимов для CURTIME ()

7 CURRENT_TIMESTAMP (), CURRENT_TIMESTAMP

Синонимов для NOW ()

8 CURTIME ()

Возвращает текущее время

9 DATE_ADD ()

Добавляет две даты

10 ФОРМАТ ДАТЫ()

Форматирует дату как указано

11 DATE_SUB ()

Вычитает две даты

12 ДАТА()

Извлекает часть даты из выражения даты или даты и времени

13 DATEDIFF ()

Вычитает две даты

14 ДЕНЬ()

Синоним для DAYOFMONTH ()

15 DAYNAME ()

Возвращает название дня недели

16 DAYOFMONTH ()

Возвращает день месяца (1-31)

17 ДЕНЬ НЕДЕЛИ()

Возвращает индекс дня недели для аргумента.

18 DAYOFYEAR ()

Возвращает день года (1-366)

19 ВЫПИСКА

Извлекает часть даты

20 FROM_DAYS ()

Преобразует номер дня в дату

21 FROM_UNIXTIME ()

Форматирует дату как метку времени UNIX

22 ЧАС()

Извлекает час

23 ПОСЛЕДНИЙ ДЕНЬ

Возвращает последний день месяца для аргумента

24 МЕСТНОЕ ВРЕМЯ (), МЕСТНОЕ ВРЕМЯ

Синоним для СЕЙЧАС ()

25 LOCALTIMESTAMP, LOCALTIMESTAMP ()

Синоним для СЕЙЧАС ()

26 MAKEDATE ()

Создает дату из года и дня года

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 SUBDATE ()

Когда вызывается с тремя аргументами, синоним DATE_SUB ()

40 SUBTIME ()

Вычитает раз

41 SYSDATE ()

Возвращает время выполнения функции

42 TIME_FORMAT ()

Форматы как время

43 TIME_TO_SEC ()

Возвращает аргумент, преобразованный в секунды

44 ВРЕМЯ()

Извлекает временную часть переданного выражения

45 TimeDiff ()

Вычитает время

46 ТШЕЗТАМР ()

С одним аргументом эта функция возвращает выражение даты или даты и времени. С двумя аргументами, сумма аргументов

47 TIMESTAMPADD ()

Добавляет интервал к выражению даты и времени

48 TIMESTAMPDIFF ()

Вычитает интервал из выражения даты и времени

49 TO_DAYS ()

Возвращает аргумент даты, преобразованный в дни

50 UNIX_TIMESTAMP ()

Возвращает метку времени UNIX

51 UTC_DATE ()

Возвращает текущую дату UTC

52 UTC_TIME ()

Возвращает текущее время UTC

53 UTC_TIMESTAMP ()

Возвращает текущую дату и время UTC

54 НЕДЕЛЮ()

Возвращает номер недели

55 ДЕНЬНЕД ()

Возвращает индекс дня недели

56 WEEKOFYEAR ()

Возвращает календарную неделю даты (1-53)

57 ГОД()

Возвращает год

58 YEARWEEK ()

Возвращает год и неделю

Добавляет даты

Добавляет время

Преобразование из одного часового пояса в другой

Возвращает текущую дату

Синонимов для CURDATE ()

Синонимов для CURTIME ()

Синонимов для NOW ()

Возвращает текущее время

Добавляет две даты

Форматирует дату как указано

Вычитает две даты

Извлекает часть даты из выражения даты или даты и времени

Вычитает две даты

Синоним для DAYOFMONTH ()

Возвращает название дня недели

Возвращает день месяца (1-31)

Возвращает индекс дня недели для аргумента.

Возвращает день года (1-366)

Извлекает часть даты

Преобразует номер дня в дату

Форматирует дату как метку времени UNIX

Извлекает час

Возвращает последний день месяца для аргумента

Синоним для СЕЙЧАС ()

Синоним для СЕЙЧАС ()

Создает дату из года и дня года

MAKETIME ()

Возвращает микросекунды от аргумента

Возвращает минуту от аргумента

Вернуть месяц с даты

Возвращает название месяца

Возвращает текущую дату и время

Добавляет период к году-месяцу

Возвращает количество месяцев между периодами

Возвращает квартал из аргумента даты

Преобразует секунды в формат «ЧЧ: ММ: СС».

Возвращает второе (0-59)

Преобразует строку в дату

Когда вызывается с тремя аргументами, синоним DATE_SUB ()

Вычитает раз

Возвращает время выполнения функции

Форматы как время

Возвращает аргумент, преобразованный в секунды

Извлекает временную часть переданного выражения

Вычитает время

С одним аргументом эта функция возвращает выражение даты или даты и времени. С двумя аргументами, сумма аргументов

Добавляет интервал к выражению даты и времени

Вычитает интервал из выражения даты и времени

Возвращает аргумент даты, преобразованный в дни

Возвращает метку времени UNIX

Возвращает текущую дату UTC

Возвращает текущее время UTC

Возвращает текущую дату и время UTC

Возвращает номер недели

Возвращает индекс дня недели

Возвращает календарную неделю даты (1-53)

Возвращает год

Возвращает год и неделю

ADDDATE (дата, интервал expr единица измерения), ADDDATE (expr, дни)

Когда вызывается с формой INTERVAL второго аргумента, 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)

AddTime (выражение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 (дт, 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 ().

ДАТА (выражение)

Извлекает часть даты из выражения даты или даты и времени.

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)

DATEDIFF (выражение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 (дата, единица измерения INTERVAL), DATE_SUB (дата, единица измерения INTERVAL)

Эти функции выполняют арифметику даты. Дата является значением DATETIME или DATE, указывающим начальную дату. Expr — это выражение, определяющее значение интервала, которое будет добавлено или вычтено из начальной даты. Expr является строкой; может начинаться с «-» для отрицательных интервалов.

Единица — это ключевое слово, обозначающее единицы, в которых следует интерпретировать выражение.

Ключевое слово INTERVAL и спецификатор единицы не чувствительны к регистру.

В следующей таблице показана ожидаемая форма аргумента expr для каждого значения единицы.

стоимость единицы Ожидаемый exprFormat
микросекунда микросекунд
ВТОРОЙ СЕКУНД
МИНУТЫ ПРОТОКОЛ
ЧАС ЧАСЫ
ДЕНЬ ДНИ
НЕДЕЛЮ НЕДЕЛИ
МЕСЯЦ МЕСЯЦЫ
КВАРТАЛ QUARTERS
ГОД ЛЕТ
SECOND_MICROSECOND ‘SECONDS.MICROSECONDS’
MINUTE_MICROSECOND ‘MINUTES.MICROSECONDS’
MINUTE_SECOND ‘ПРОТОКОЛ: SECONDS’
HOUR_MICROSECOND ‘HOURS.MICROSECONDS’
HOUR_SECOND «ЧАСЫ: Минуты: Секунды»
HOUR_MINUTE «ЧАСЫ: МИНУТЫ»
DAY_MICROSECOND ‘DAYS.MICROSECONDS’
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

% в

Сокращенное название дня недели (вс ..сат)

2

% б

Сокращенное название месяца (янв .. декабрь)

3

% с

Месяц, числовой (0..12)

4

% D

День месяца с английским суффиксом (0, 1, 2, 3,.)

5

% d

День месяца, числовой (00..31)

6

% е

День месяца, числовой (0..31)

7

% е

Микросекунды (000000..999999)

8

%ЧАС

Час (00..23)

9

%час

Час (01.12.12)

10

Час (01.12.12)

11

Минуты, числовые (00..59)

12

% J

День года (001..366)

13

% к

Час (0..23)

14

% л

Час (1..12)

15

% M

Название месяца (январь .. декабрь)

16

% м

Месяц, числовой (00..12)

17

%п

До или после полудня

18

Время, 12 часов (чч: мм: сс, затем AM или PM)

19

% S

Секунды (00..59)

20

% s

Секунды (00..59)

21

% Т

Время, 24 часа (чч: мм: сс)

22

% U

Неделя (00..53), где воскресенье — первый день недели

23

% U

Неделя (00..53), где понедельник — первый день недели

24

% V

Неделя (01..53), где воскресенье — первый день недели; используется с% X

25

% v

Неделя (01..53), где понедельник — первый день недели; используется с% x

26

% W

Название дня недели (воскресенье .. суббота)

27

% мас

День недели (0 = воскресенье. 6 = суббота)

28

%ИКС

Год недели, где воскресенье — первый день недели, цифра, четыре цифры; используется с% V

29

%Икс

Год недели, где понедельник — первый день недели, цифра, четыре цифры; используется с% v

30

% Y

Год, цифра, четыре цифры

31

% г

Год, числовой (две цифры)

32

%%

Буквально.%. персонаж

33

%Икс

х, для любого х. не указано выше

% в

Сокращенное название дня недели (вс ..сат)

% б

Сокращенное название месяца (янв .. декабрь)

% с

Месяц, числовой (0..12)

% D

День месяца с английским суффиксом (0, 1, 2, 3,.)

% d

День месяца, числовой (00..31)

% е

День месяца, числовой (0..31)

% е

Микросекунды (000000..999999)

%ЧАС

Час (00..23)

%час

Час (01.12.12)

Час (01.12.12)

Минуты, числовые (00..59)

% J

День года (001..366)

% к

Час (0..23)

% л

Час (1..12)

% M

Название месяца (январь .. декабрь)

% м

Месяц, числовой (00..12)

%п

До или после полудня

Время, 12 часов (чч: мм: сс, затем AM или PM)

% S

Секунды (00..59)

% s

Секунды (00..59)

% Т

Время, 24 часа (чч: мм: сс)

% U

Неделя (00..53), где воскресенье — первый день недели

% U

Неделя (00..53), где понедельник — первый день недели

% V

Неделя (01..53), где воскресенье — первый день недели; используется с% X

% v

Неделя (01..53), где понедельник — первый день недели; используется с% x

% W

Название дня недели (воскресенье .. суббота)

% мас

День недели (0 = воскресенье. 6 = суббота)

%ИКС

Год недели, где воскресенье — первый день недели, цифра, четыре цифры; используется с% V

%Икс

Год недели, где понедельник — первый день недели, цифра, четыре цифры; используется с% v

% Y

Год, цифра, четыре цифры

% г

Год, числовой (две цифры)

%%

Буквально.%. персонаж

%Икс

х, для любого х. не указано выше

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 (дата, единица измерения INTERVAL)

Это похоже на функцию DATE_ADD ().

ДЕНЬ (дата)

DAY () является синонимом функции DAYOFMONTH ().

DAYNAME (дата)

Возвращает название дня недели для даты.

mysql> SELECT DAYNAME('1998-02-05');
+---------------------------------------------------------+
| DAYNAME('1998-02-05')                                   |
+---------------------------------------------------------+
| Thursday                                                |
+---------------------------------------------------------+
1 row in set (0.00 sec)

DAYOFMONTH (дата)

Возвращает день месяца для даты в диапазоне от 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 (дата)

Возвращает день года для даты в диапазоне от 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)

Примечание. Используйте 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 ().

MAKEDATE (год, DayOfYear)

Возвращает дату, данные года и значения дня в году. Значение 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 (Р1, Р2)

Возвращает количество месяцев между периодами P1 и P2. Эти периоды P1 и P2 должны быть в формате ГГММ или ГГГГММ. Обратите внимание, что аргументы периода 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 (дата, интервал expr) и SUBDATE (expr, дни)

Когда вызывается с формой 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 (выражение1, выражение2)

Функция SUBTIME () возвращает expr1. expr2 выражается как значение в том же формате, что и expr1. Значение expr1 является выражением времени или даты и времени, а значение 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)

TIME (выражение)

Извлекает часть времени из выражения времени или даты и времени и возвращает его в виде строки.

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)

С одним аргументом эта функция возвращает выражение даты или выражения даты и времени в качестве значения даты и времени. С двумя аргументами он добавляет выражение времени 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)

Эта функция добавляет интервал целочисленного выражения к выражению даты или даты и времени datetime_expr . Единица для интервала задается аргументом unit, который должен принимать одно из следующих значений:

  • FRAC_SECOND
  • ВТОРАЯ, МИНУТА
  • ЧАС, ДЕНЬ
  • НЕДЕЛЮ
  • МЕСЯЦ
  • КВАРТАЛ или
  • ГОД

Значение единицы может быть указано с использованием одного из ключевых слов, как показано, или с префиксом 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 (единица измерения, datetime_expr1, datetime_expr2)

Возвращает целочисленную разницу между выражениями date или datetime datetime_expr1 и datetime_expr2. Единица для результата задается аргументом единицы. Допустимые значения для единицы те же, что указаны в описании функции 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 (секунды с UTC 1970-01-01 00:00:00) в виде целого числа без знака. Если UNIX_TIMESTAMP () вызывается с аргументом даты, он возвращает значение аргумента в секундах с UTC 1970-01-01 00:00:00. date может быть строкой 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. Если аргумент mode пропущен, используется значение системной переменной 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 (дата, 3).

mysql> SELECT WEEKOFYEAR('1998-02-20');
+---------------------------------------------------------+
| WEEKOFYEAR('1998-02-20')                                |
+---------------------------------------------------------+
| 8                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

YEAR (дата)

Возвращает год для даты в диапазоне от 1000 до 9999 или 0 для нуля. Дата.

mysql> SELECT YEAR('98-02-03');
+---------------------------------------------------------+
| YEAR('98-02-03')                                        |
+---------------------------------------------------------+
| 1998                                                    |
+---------------------------------------------------------+
1 row in set (0.00 sec)

YEARWEEK (дата), YEARWEEK (дата, режим)

Возвращает год и неделю для даты. Аргумент mode работает точно так же, как аргумент mode функции WEEK (). Год в результате может отличаться от года в аргументе даты для первой и последней недели года.

mysql> SELECT YEARWEEK('1987-01-01');
+---------------------------------------------------------+
| YEAR('98-02-03')YEARWEEK('1987-01-01')                  |
+---------------------------------------------------------+
| 198653                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

Примечание. Номер недели отличается от того, что функция WEEK () будет возвращать (0) для необязательных аргументов 0 или 1, поскольку WEEK () затем возвращает неделю в контексте заданного года.