В MySQL встроено множество функций. даты и времени, который может гибко и удобно обрабатывать данные даты и времени. В этом разделе кратко представлены встроенные функции MySQL. даты и времени。
Функция CURDATE() используется для возврата текущей даты, которая содержит только части года, месяца и дня, в формате ГГГГ-ММ-ДД. Примеры использования следующие:
mysql> SELECT CURDATE();
+------------+
| CURDATE() |
+------------+
| 2019-12-11 |
+------------+
1 row in set (0.00 sec)
Функция функции CURRENT_DATE() аналогична функции CURDATE() и не будет описываться повторно.
Функция CURTIME() используется для возврата текущего времени, которое содержит только часы, минуты и секунды, в формате ЧЧ:ММ:СС. Примеры использования следующие:
mysql> SELECT CURTIME();
+-----------+
| CURTIME() |
+-----------+
| 11:27:44 |
+-----------+
1 row in set (0.00 sec)
Функция функции CURRENT_TIME() аналогична функции CURTIME и не будет описываться повторно.
Функция NOW() используется для возврата текущей даты и времени, включая год, месяц, день, час, минуту и секунду, в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС. Примеры использования следующие:
mysql> SELECT NOW();
+---------------------+
| NOW() |
+---------------------+
| 2019-12-15 11:29:22 |
+---------------------+
1 row in set (0.00 sec)
Функции функций CURRENT_TIMESTAMP(), LOCALTIME(), LOCALTIMESTAMP() и SYSDATE() аналогичны функции NOW() и не будут описываться повторно.
Преобразование даты в метку времени UNIX. Примеры использования следующие:
mysql> SELECT UNIX_TIMESTAMP(now());
+-----------------------+
| UNIX_TIMESTAMP(now()) |
+-----------------------+
| 1576380910 |
+-----------------------+
1 row in set (0.01 sec)
mysql> SELECT UNIX_TIMESTAMP(CURDATE());
+---------------------------+
| UNIX_TIMESTAMP(CURDATE()) |
+---------------------------+
| 1576339200 |
+---------------------------+
1 row in set (0.00 sec)
mysql> SELECT UNIX_TIMESTAMP(CURTIME());
+---------------------------+
| UNIX_TIMESTAMP(CURTIME()) |
+---------------------------+
| 1576380969 |
+---------------------------+
1 row in set (0.00 sec)
Функция FROM_UNIXTIME(timestamp) преобразует временную метку UNIX в дату и время в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС и является обратной функцией функции UNIX_TIMESTAMP(date). Примеры использования следующие:
mysql> SELECT FROM_UNIXTIME(1576380910);
+---------------------------+
| FROM_UNIXTIME(1576380910) |
+---------------------------+
| 2019-12-15 11:35:10 |
+---------------------------+
1 row in set (0.00 sec)
Функция UTC_DATE() используется для возврата даты в формате UTC. Примеры использования следующие:
mysql> SELECT UTC_DATE();
+------------+
| UTC_DATE() |
+------------+
| 2019-12-15 |
+------------+
1 row in set (0.00 sec)
Также можно вернуть дату в формате ГГГГММДД. Примеры использования следующие:
mysql> SELECT UTC_DATE()+0;
+--------------+
| UTC_DATE()+0 |
+--------------+
| 20191215 |
+--------------+
1 row in set (0.00 sec)
Функция UTC_TIME() используется для возврата времени UTC. Примеры использования следующие:
mysql> SELECT UTC_TIME();
+------------+
| UTC_TIME() |
+------------+
| 06:39:00 |
+------------+
1 row in set (0.00 sec)
Функция ГОД(дата) используется для возврата года даты, возвращаемое значение — 1970~2069. Примеры использования следующие:
mysql> SELECT YEAR(NOW());
+-------------+
| YEAR(NOW()) |
+-------------+
| 2019 |
+-------------+
1 row in set (0.00 sec)
Примечание. 00–69 будут преобразованы в 2000–2069, а 70–99 будут преобразованы в 1970–1999.
Функция МЕСЯЦ(дата) используется для возврата месяца, соответствующего дате, и возвращается значение от 1 до 12. Примеры использования следующие:
mysql> SELECT MONTH(NOW());
+--------------+
| MONTH(NOW()) |
+--------------+
| 12 |
+--------------+
1 row in set (0.00 sec)
Функция MONTHNAME(date) используется для возврата английского названия месяца, в котором находится дата. Примеры использования следующие:
mysql> SELECT MONTHNAME(NOW());
+------------------+
| MONTHNAME(NOW()) |
+------------------+
| December |
+------------------+
1 row in set (0.00 sec)
Функция ДЕНЬ(дата) возвращает только дату. Примеры использования следующие:
mysql> SELECT DAY(NOW());
+------------+
| DAY(NOW()) |
+------------+
| 15 |
+------------+
1 row in set (0.00 sec)
Функция DAYNAME(date) используется для возврата английского названия недели, соответствующей дате. Примеры использования следующие:
mysql> SELECT DAYNAME(NOW());
+----------------+
| DAYNAME(NOW()) |
+----------------+
| Sunday |
+----------------+
1 row in set (0.00 sec)
mysql> SELECT DAYNAME('2020-01-01');
+-----------------------+
| DAYNAME('2020-01-01') |
+-----------------------+
| Wednesday |
+-----------------------+
1 row in set (0.00 sec)
Функция DAYOFWEEK(date) используется для возврата значения индекса недели, соответствующей дате. 1 означает воскресенье, 2 означает понедельник и так далее. Примеры использования следующие:
mysql> SELECT DAYOFWEEK(NOW());
+------------------+
| DAYOFWEEK(NOW()) |
+------------------+
| 1 |
+------------------+
1 row in set (0.00 sec)
mysql> SELECT DAYOFWEEK('2020-01-01');
+-------------------------+
| DAYOFWEEK('2020-01-01') |
+-------------------------+
| 4 |
+-------------------------+
1 row in set (0.00 sec)
Функция ДЕНЬНЕД(дата) возвращает значение индекса недели, соответствующее дате. 0 означает понедельник, 1 означает вторник и так далее. Примеры использования следующие:
mysql> SELECT WEEKDAY(NOW());
+----------------+
| WEEKDAY(NOW()) |
+----------------+
| 6 |
+----------------+
1 row in set (0.00 sec)
mysql> SELECT WEEKDAY('2020-01-01');
+-----------------------+
| WEEKDAY('2020-01-01') |
+-----------------------+
| 2 |
+-----------------------+
1 row in set (0.00 sec)
Функция WEEK(date) возвращает номер недели года для заданной даты. Примеры использования следующие:
mysql> SELECT WEEK(NOW());
+-------------+
| WEEK(NOW()) |
+-------------+
| 50 |
+-------------+
1 row in set (0.00 sec)
Функция WEEKOFYEAR(date) возвращает номер недели года, в котором находится дата. Примеры использования следующие:
mysql> SELECT WEEKOFYEAR(NOW());
+-------------------+
| WEEKOFYEAR(NOW()) |
+-------------------+
| 50 |
+-------------------+
1 row in set (0.00 sec)
Функция DAYOFYEAR(date) возвращает день года. Примеры использования следующие:
mysql> SELECT DAYOFYEAR(NOW());
+------------------+
| DAYOFYEAR(NOW()) |
+------------------+
| 349 |
+------------------+
1 row in set (0.00 sec)
Функция DAYOFMONTH(date) возвращает день месяца, в котором находится дата. Примеры использования следующие:
mysql> SELECT DAYOFMONTH(NOW());
+-------------------+
| DAYOFMONTH(NOW()) |
+-------------------+
| 15 |
+-------------------+
1 row in set (0.00 sec)
Функция QUARTER(date) возвращает квартал, соответствующий дате, в диапазоне от 1 до 4. Примеры использования следующие:
mysql> SELECT QUARTER(NOW());
+----------------+
| QUARTER(NOW()) |
+----------------+
| 4 |
+----------------+
1 row in set (0.00 sec)
Функция HOUR(time) возвращает час указанного времени. Примеры использования следующие:
mysql> SELECT HOUR(NOW());
+-------------+
| HOUR(NOW()) |
+-------------+
| 11 |
+-------------+
1 row in set (0.00 sec)
Функция МИНУТА(время) возвращает минуты указанного времени в диапазоне от 0 до 59. Примеры использования следующие:
mysql> SELECT MINUTE(NOW());
+---------------+
| MINUTE(NOW()) |
+---------------+
| 45 |
+---------------+
1 row in set (0.00 sec)
Функция SECOND(time) возвращает количество секунд в указанном времени в диапазоне от 0 до 59. Примеры использования следующие:
mysql> SELECT SECOND(NOW());
+---------------+
| SECOND(NOW()) |
+---------------+
| 22 |
+---------------+
1 row in set (0.00 sec)
Функция EXTRACT(type FROM date) возвращает определенную часть указанной даты, а type указывает возвращаемое значение. Среди них значение типа показано в Таблице 11-1.
Таблица 11-1 Значение и значение типа в функции EXTRACT(type FROM date)
Примечание. Когда значение типа в функции EXTRACT (тип FROM date) равно MINUTE_SECOND, это означает, что возвращаются значения минуты и секунды. Когда минута в дате равна 12, а секунда — 12, возвращаемый результат равен. 1212. Другими словами, за минутами следует значение секунд. То же правило применяется, когда тип принимает другие подчеркнутые значения.
Примеры использования следующие:
mysql> SELECT EXTRACT(HOUR_MINUTE FROM NOW());
+---------------------------------+
| EXTRACT(HOUR_MINUTE FROM NOW()) |
+---------------------------------+
| 2142 |
+---------------------------------+
1 row in set (0.00 sec)
Функция TIME_TO_SEC(время) преобразует время в секунды и возвращает значение результата. Формула преобразования: часы*3600+минуты*60+секунды. Примеры использования следующие:
mysql> SELECT TIME_TO_SEC(NOW());
+--------------------+
| TIME_TO_SEC(NOW()) |
+--------------------+
| 78774 |
+--------------------+
1 row in set (0.00 sec)
Функция SEC_TO_TIME(секунды) преобразует описание секунд во время, содержащее часы, минуты и секунды. Примеры использования следующие:
mysql> SELECT SEC_TO_TIME(78774);
+--------------------+
| SEC_TO_TIME(78774) |
+--------------------+
| 21:52:54 |
+--------------------+
1 row in set (0.12 sec)
Функция DATE_ADD(date,INTERVAL expr type) возвращает дату, которая отличается от даты на интервал времени INTERVAL. По сути, это операция сложения дат. Типом этой функции является тип интервала. Тип интервала показан в Таблице 11-2.
Таблица 11-2 Значение типа в функции DATE_ADD(date,INTERVAL expr type)
Примеры использования следующие:
mysql> SELECT DATE_ADD(NOW(), INTERVAL 1 DAY);
+---------------------------------+
| DATE_ADD(NOW(), INTERVAL 1 DAY) |
+---------------------------------+
| 2019-12-16 22:04:36 |
+---------------------------------+
1 row in set (0.00 sec)
Функция ADDDATE(дата,тип выражения INTERVAL) имеет ту же функцию, что и функция DATE_ADD(дата,тип выражения INTERVAL), и не будет описываться снова.
DATE_SUB(date,INTERVAL expr тип) Функция возвращает дату, которая отличается от даты на интервал времени INTERVAL. По сути, это операция вычитания даты. Значение типа см. в Таблице. 11-2。Примеры использования следующие:
mysql> SELECT DATE_SUB(NOW(), INTERVAL 1 DAY);
+---------------------------------+
| DATE_SUB(NOW(), INTERVAL 1 DAY) |
+---------------------------------+
| 2019-12-14 22:09:10 |
+---------------------------------+
1 row in set (0.00 sec)
Функция SUBDATE(дата,тип выражения INTERVAL) имеет ту же функцию, что и функция DATE_SUB(дата,тип выражения INTERVAL), и не будет описываться снова.
Примечание. Отрицательные значения можно указать для четырех функций DATE_ADD, ADDDATE, DATE_SUB и SUBDATE.
Функция ДОБАВИТЬВРЕМЯ(время1,время2) возвращает время времени1 плюс время2. Среди них time2 — это выражение или число. Когда time2 — это число, оно представляет секунды. Примеры использования следующие:
mysql> SELECT ADDTIME(NOW(), 50);
+---------------------+
| ADDTIME(NOW(), 50) |
+---------------------+
| 2019-12-15 22:17:47 |
+---------------------+
1 row in set (0.00 sec)
mysql> SELECT ADDTIME(NOW(), '1:1:1');
+-------------------------+
| ADDTIME(NOW(), '1:1:1') |
+-------------------------+
| 2019-12-15 23:18:46 |
+-------------------------+
1 row in set (0.00 sec)
ADDTIME(NOW(),'1:1:1') означает возврат времени после добавления 1 часа, 1 минуты и 1 секунды к текущему времени.
Значение time2 в функции ADDTIME(time1, time2) также может быть отрицательным.
mysql> SELECT ADDTIME(NOW(), '-1:-1:-1');
+----------------------------+
| ADDTIME(NOW(), '-1:-1:-1') |
+----------------------------+
| 2019-12-15 22:19:29 |
+----------------------------+
1 row in set, 1 warning (0.01 sec)
ADDTIME(NOW(),'-1:-1:-1') означает возврат времени минус 1 час, 1 минута и 1 секунда от текущего времени.
СУБВРЕМЯ(время1,время2) Функция возвращает время после времени1 минус время2. Среди них time2 — это выражение или число. Когда time2 — это число, оно представляет секунды. Примеры использования следующие:
mysql> SELECT SUBTIME(NOW(), 50);
+---------------------+
| SUBTIME(NOW(), 50) |
+---------------------+
| 2019-12-15 22:23:35 |
+---------------------+
1 row in set (0.00 sec)
mysql> SELECT SUBTIME(NOW(), '1:1:1');
+-------------------------+
| SUBTIME(NOW(), '1:1:1') |
+-------------------------+
| 2019-12-15 21:23:50 |
+-------------------------+
1 row in set (0.00 sec)
mysql> SELECT SUBTIME(NOW(), '-1:-1:-1');
+----------------------------+
| SUBTIME(NOW(), '-1:-1:-1') |
+----------------------------+
| 2019-12-15 22:25:11 |
+----------------------------+
1 row in set, 1 warning (0.00 sec)
ДАТЕДИФФ(дата1,дата2) Функция Вычисляет количество дней между двумя датами. Примеры использования следующие:
mysql> SELECT DATEDIFF(NOW(), '1970-01-01');
+-------------------------------+
| DATEDIFF(NOW(), '1970-01-01') |
+-------------------------------+
| 18245 |
+-------------------------------+
1 row in set (0.00 sec)
Функция FROM_DAYS(N) возвращает дату через N дней после 1 января 0000 года. Примеры использования следующие:
mysql> SELECT FROM_DAYS(366);
+----------------+
| FROM_DAYS(366) |
+----------------+
| 0001-01-01 |
+----------------+
1 row in set (0.00 sec)
LAST_ДЕНЬ(дата)функция возвращает дату последнего дня месяца, в котором находится дата. Примеры использования следующие:
mysql> SELECT LAST_DAY(NOW());
+-----------------+
| LAST_DAY(NOW()) |
+-----------------+
| 2019-12-31 |
+-----------------+
1 row in set (0.00 sec)
MAKEDATE(год,n) Функция Возвращает дату заданного года и количество дней в году. Примеры использования следующие:
mysql> SELECT MAKEDATE(2020,1);
+------------------+
| MAKEDATE(2020,1) |
+------------------+
| 2020-01-01 |
+------------------+
1 row in set (0.00 sec)
mysql> SELECT MAKEDATE(2020,32);
+-------------------+
| MAKEDATE(2020,32) |
+-------------------+
| 2020-02-01 |
+-------------------+
1 row in set (0.00 sec)
Объединяет заданные часы, минуты и секунды во время и возвращает его. Примеры использования следующие:
mysql> SELECT MAKETIME(1,1,1);
+-----------------+
| MAKETIME(1,1,1) |
+-----------------+
| 01:01:01 |
+-----------------+
1 row in set (0.00 sec)
Функция PERIOD_ADD(время,n) возвращает время плюс n. Примеры использования следующие:
mysql> SELECT PERIOD_ADD(20200101010101,1);
+------------------------------+
| PERIOD_ADD(20200101010101,1) |
+------------------------------+
| 20200101010102 |
+------------------------------+
1 row in set (0.00 sec)
TO_DAYS(дата) Функция возвращает количество дней с 1 января 0000 года. Примеры использования следующие:
mysql> SELECT TO_DAYS(NOW());
+----------------+
| TO_DAYS(NOW()) |
+----------------+
| 737773 |
+----------------+
1 row in set (0.00 sec)
Функция DATE_FORMAT(date,format) форматирует дату в соответствии с указанным форматом. Среди них наиболее часто используемые символы формата показаны в Таблице 11-3.
Таблица 11-3 Часто используемые символы формата в формате функции DATE_FORMAT(date,format)
Примеры использования следующие:
mysql> SELECT DATE_FORMAT(NOW(), '%H:%i:%s');
+--------------------------------+
| DATE_FORMAT(NOW(), '%H:%i:%s') |
+--------------------------------+
| 22:57:34 |
+--------------------------------+
1 row in set (0.00 sec)
Функция TIME_FORMAT(время,формат) форматирует дату в соответствии с указанным форматом. Среди них наиболее часто используемые символы формата см. Таблицу. 11-3。Примеры использования следующие:
mysql> SELECT TIME_FORMAT(NOW(), '%H:%i:%s');
+--------------------------------+
| TIME_FORMAT(NOW(), '%H:%i:%s') |
+--------------------------------+
| 22:59:40 |
+--------------------------------+
1 row in set (0.00 sec)
Функция GET_FORMAT(date_type,format_type) возвращает формат отображения строки даты, где date_type представляет тип даты, а format_type представляет тип форматирования. Значения типа даты и типа форматирования показаны в Таблице 11-4.
Таблица 11-4: Строка формата, возвращаемая функцией GET_FORMAT
Примеры использования следующие:
mysql> SELECT GET_FORMAT(DATE, 'USA');
+-------------------------+
| GET_FORMAT(DATE, 'USA') |
+-------------------------+
| %m.%d.%Y |
+-------------------------+
1 row in set (0.00 sec)
STR_TO_DATE(строка,формат) Функция преобразует строку str в дату или время в соответствии с форматом. Среди них значение формата показано в Таблице. 11-3。Примеры использования следующие:
mysql> SELECT STR_TO_DATE('2020-01-01 00:00:00','%Y-%m-%d');
+-----------------------------------------------+
| STR_TO_DATE('2020-01-01 00:00:00','%Y-%m-%d') |
+-----------------------------------------------+
| 2020-01-01 |
+-----------------------------------------------+
1 row in set, 1 warning (0.00 sec)