🌈 个人主页:danci_
🔥 系列专栏:《MYSQL应用》
💪🏻 制定明确可量化的目标,坚持默默的做事。
MYSQL日期时间函数是数据库操作中不可或缺的一环,它们能够精确处理和操控时间数据,为数据分析、查询优化和报表生成提供强大的支持。以下是一些常用的MySQL时间函数。
内容有点多,建议收藏以备后续用到查阅参考。
目录
一、获取当前日期+时间
二、获取当前日期
三、获取当前时间
四、日期时间选取函数(Extract函数)
五、WEEK相关函数
5.1 WEEK() 函数
5.2 WEEKDAY() 函数
5.3 WEEKOFYEAR() 函数
5.4 YEARWEEK() 函数
六、DAY相关函数
6.1 DAY() 函数
6.2 DAYNAME() 函数
6.3 DAYOFMONTH() 函数
6.4 DAYOFWEEK() 函数
6.5 DAYOFYEAR() 函数
6.6 FROM_DAYS() 函数
6.7 TO_DAYS() 函数
6.8 LAST_DAY() 函数
七、DATE相关函数
7.1 DATE() 函数
7.2 DATE_ADD() 函数
7.3 DATE_FORMAT() 函数
7.4 DATE_SUB() 函数
7.5 DATEDIFF() 函数
7.6 ADDDATE() 函数
7.7 MAKEDATE() 函数
7.8 STR_TO_DATE() 函数
7.9 SUBDATE() 函数
八、TIME相关函数
8.1 TIME() 函数
8.2 TIME_FORMAT函数
8.3 TIME_TO_SEC() 函数
8.4 TIMEDIFF() 函数
8.5 TIMESTAMP() 函数
8.6 TIMESTAMPADD() 函数
8.7 TIMESTAMPDIFF() 函数
8.8 ADDTIME() 函数
8.9 LOCALTIME() 函数
8.10 LOCALTIMESTAMP() 函数
8.11 MAKETIME() 函数
8.12 SEC_TO_TIME() 函数
8.13 SUBTIME() 函数
8.14 UNIX_TIMESTAMP() 函数
九、CUR相关函数
9.1 CURDATE() 函数
9.2 CURRENT_DATE() 函数
9.3 CURRENT_TIME() 函数
9.4 CURRENT_TIMESTAMP() 函数
9.5 CURTIME() 函数
十、其它日期时间函数
10.1 MICROSECOND() 函数
10.2 SECOND() 函数
10.3 MINUTE() 函数
10.4 HOUR() 函数
10.5 DAY() 函数
10.6 MONTH() 函数
10.7 QUARTER() 函数
10.8 YEAR() 函数
10.9 TO_SECONDS() 函数
10.10 MONTHNAME() 函数
10.11 PERIOD_ADD() 函数
10.12 PERIOD_DIFF() 函数
10.13 CONVERT_TZ() 函数
12.14 UTC函数
语法:
NOW(M)
参数说明:
示例:
mysql> SELECT NOW(), NOW()+1, NOW(6), NOW(6)+1; +---------------------+----------------+---------------------------+-----------------------+ | NOW() | NOW()+1 | NOW(6) | NOW(6)+1 | +---------------------+-----------------------+--------------------+-----------------------+ | 2023-10-22 10:04:04 | 20231022100405 | 2023-10-22 10:04:04.485897| 20231022100405.485897 | +---------------------+-----------------------+--------------------+-----------------------+
说明:
mysql> SELECT CURDATE(), CURDATE()+1; +---------------------+-----------------------+ | CURDATE() | CURDATE()+1 | +---------------------+-----------------------+ | 2023-10-22 | 20231023 | +---------------------+-----------------------+
说明:
语法:
CURTIME(M)
参数说明:
示例:
mysql> SELECT CURTIME(), CURTIME() + 1, CURTIME(6), CURTIME(6) + 1; +---------------------+-----------------------+------------------+ | CURDATE() | CURDATE() + 1 | CURTIME(6) | CURTIME(6) + 1 | +---------------------+-----------------------+------------------+ | 18:51:58 | 185159 | 18:51:58.994696 | 185159.994696 | +---------------------+-----------------------+------------------+
说明:
注:UTC日期时间与上述日期时间输出格式相同(减8个小时)有
因为我国位于东八时区,所以本地时间 = UTC 时间 + 8 小时。UTC 时间在业务涉及多个国家和地区的时候,非常有用。
MySQL EXTRACT() 函数从指定的日期/时间中提取指定的部分并返回。
语法:
EXTRACT(unit FROM date)
参数说明:
返回值:
示例:
mysql> set @date = NOW(6); mysql> SELECT @date; +---------------------+-----------------------+ | @date | +---------------------+-----------------------+ | 2023-10-22 18:07:46.304775 | +---------------------+-----------------------+ SELECT EXTRACT(YEAR FROM @date); -- 2023 SELECT EXTRACT(QUARTER FROM @date); -- 4 SELECT EXTRACT(MONTH FROM @date); -- 10 SELECT EXTRACT(WEEK FROM @date); -- 43 SELECT EXTRACT(DAY FROM @date); -- 22 SELECT EXTRACT(HOUR FROM @date); -- 8 SELECT EXTRACT(MINUTE FROM @date); -- 7 SELECT EXTRACT(SECOND FROM @date); -- 46 SELECT EXTRACT(MICROSECOND FROM @date); -- 304775 SELECT EXTRACT(YEAR_MONTH FROM @date); -- 202310 SELECT EXTRACT(DAY_HOUR FROM @date); -- 2218 SELECT EXTRACT(DAY_MINUTE FROM @date); -- 221807 SELECT EXTRACT(DAY_SECOND FROM @date); -- 22180746 SELECT EXTRACT(DAY_MICROSECOND FROM @date); -- 22180746304775 SELECT EXTRACT(HOUR_MINUTE FROM @date); -- 807 SELECT EXTRACT(HOUR_SECOND FROM @date); -- 80746 SELECT EXTRACT(HOUR_MICROSECOND FROM @date); -- 80746304775 SELECT EXTRACT(MINUTE_SECOND FROM @date); -- 746 SELECT EXTRACT(MINUTE_MICROSECOND FROM @date); -- 746304775 SELECT EXTRACT(SECOND_MICROSECOND FROM @date); -- 46304775
MySQL WEEK() 函数返回给定日期位于当年的第几周。
语法:
WEEK(date) WEEK(date, mode)
参数说明:
返回值:
mode 参数的处理逻辑如下:
Mode 每周的第一天 返回值范围 对第一周的要求 0 星期天 0-53 1 星期一 0-53 在本年至少 4 天 2 星期天 1-53 3 星期一 1-53 在本年至少 4 天 4 星期天 0-53 在本年至少 4 天 5 星期一 0-53 6 星期天 1-53 在本年至少 4 天 7 星期一 1-53
示例:
SELECT WEEK('2023-01-01'), -- 1 WEEK('2023-01-01', 0), -- 1 WEEK('2023-01-03', 0), -- 1 WEEK('2023-01-01', 1), -- 0 WEEK('2023-01-03', 1), -- 1 WEEK('2023-01-01', 2), -- 1 WEEK('2023-01-03', 2), -- 1 WEEK('2023-01-01', 3), -- 52 WEEK('2023-01-03', 3), -- 1 WEEK('2023-01-01', 4), -- 1 WEEK('2023-01-03', 4), -- 1 WEEK('2023-01-01', 5), -- 0 WEEK('2023-01-03', 5), -- 1 WEEK('2023-01-01', 6), -- 1 WEEK('2023-01-03', 6), -- 1 WEEK('2023-01-01', 7), -- 52 WEEK('2023-01-03', 7) -- 1
MySQL WEEKDAY() 函数返回给定日期的工作日编号。
语法:
WEEKDAY(date)
参数说明:
返回值:
示例:
SELECT WEEKDAY('2023-10-21'), -- 5 WEEKDAY('2023-10-22'), -- 6 WEEKDAY('2023-10-23'), -- 0 WEEKDAY('2023-10-24'), -- 1 WEEKDAY('2023-10-25'), -- 2 WEEKDAY('2023-10-26'), -- 3 WEEKDAY('2023-10-27') -- 4
MySQL WEEKOFYEAR() 函数返回给定日期位于当年的第几周。该函数相当于WEEK(date,3)。
语法:
WEEKOFYEAR(date)
参数说明:
返回值:
示例:
SELECT WEEKOFYEAR('2023-01-01'), -- 52(2023年第一周只有2天) WEEKOFYEAR('2023-01-02'), -- 1 WEEKOFYEAR('2023-01-03'), -- 1 WEEKOFYEAR('2024-01-01'), -- 1 (2024年第一周大于3天) WEEKOFYEAR('2024-01-02'), -- 1 WEEKOFYEAR('2024-01-03'); -- 1
mysql> SHOW VARIABLES LIKE 'default_week_format';; +---------------------+-----------------+ | Variable | Value | +---------------------+-----------------+ | default_week_format | 0 | +---------------------+-----------------+
MySQL YEARWEEK() 函数返回一个表示给定日期所在年份和第几周的数字。此函数与 WEEK() 类似。
语法:
YEARWEEK(date) YEARWEEK(date, mode)
参数说明:
返回值:
mode 参数的处理逻辑如下:
Mode 每周的第一天 返回值范围 对第一周的要求 0 星期天 0-53 1 星期一 0-53 在本年至少 4 天 2 星期天 1-53 3 星期一 1-53 在本年至少 4 天 4 星期天 0-53 在本年至少 4 天 5 星期一 0-53 6 星期天 1-53 在本年至少 4 天 7 星期一 1-53
示例:
SELECT YEARWEEK('2023-01-01'), -- 202301 YEARWEEK('2023-01-01', 0), -- 202301 YEARWEEK('2023-01-03', 0), -- 202301 YEARWEEK('2023-01-01', 1), -- 202252 YEARWEEK('2023-01-03', 1), -- 202301 YEARWEEK('2023-01-01', 2), -- 202301 YEARWEEK('2023-01-03', 2), -- 202301 YEARWEEK('2023-01-01', 3), -- 202252 YEARWEEK('2023-01-03', 3), -- 202301 YEARWEEK('2023-01-01', 4), -- 202301 YEARWEEK('2023-01-03', 4), -- 202301 YEARWEEK('2023-01-01', 5), -- 202252 YEARWEEK('2023-01-03', 5), -- 202301 YEARWEEK('2023-01-01', 6), -- 202301 YEARWEEK('2023-01-03', 6), -- 202301 YEARWEEK('2023-01-01', 7), -- 202352 YEARWEEK('2023-01-03', 7) -- 202301
mysql> SHOW VARIABLES LIKE 'default_week_format';; +---------------------+-----------------+ | Variable | Value | +---------------------+-----------------+ | default_week_format | 0 | +---------------------+-----------------+
MySQL DAY() 函数返回日期时间表达式中的代表月份中的一天的数字。此函数等同于 DAYOFMONTH() 函数。
语法:
DAY(expr)
参数说明:
返回值:
示例:
SELECT DAY('2023-10-22'), -- 22 DAY('2023-10-22 18:10:10'), -- 22 DAY(NOW()), -- 22 DAY('2023-02-00'), -- 0 DAY('2023-02-30'), -- NULL DAY('Not A DATE'), -- NULL DAY(NULL) -- NULL
MySQL DAYNAME() 函数返回给定日期的工作日名称。
语法:
DAYNAME(expr)
参数说明:
返回值:
示例:
SELECT DAYNAME('2023-10-22'), -- Sunday DAYNAME('2023-10-23'), -- Monday DAYNAME('2023-10-24'), -- Tuesday DAYNAME('2023-10-25'), -- Wednesday DAYNAME('2023-10-26'), -- Thursday DAYNAME('2023-10-27'), -- Friday DAYNAME('2023-10-28'), -- Saturday DAYNAME(NOW()), -- Sunday DAYNAME('2023-02-00'), -- NULL DAYNAME('2023-02-30'), -- NULL DAYNAME('Not A DATE'), -- NULL DAYNAME(NULL) -- NULL
MySQL DAYOFMONTH() 函数返回日期时间表达式中的代表月份中的一天的数字。此函数等同于 DAY() 函数。
语法:
DAYOFMONTH(expr)
参数说明:
返回值:
示例:
SELECT DAYOFMONTH('2023-10-22'), -- 22 DAYOFMONTH('2023-10-22 11:11:11'), -- 22 DAYOFMONTH(NOW()), -- 22 DAYOFMONTH('2023-02-00'), -- 0 DAYOFMONTH('2023-02-30'), -- NULL DAYOFMONTH('Not A DATE'), -- NULL DAYOFMONTH(NULL) -- NULL
MySQL DAYOFWEEK() 函数返回给定日期的工作日的索引。
语法:
DAYOFWEEK(expr)
参数说明:
返回值:
示例:
SELECT DAYOFWEEK('2023-10-21'), -- 7 DAYOFWEEK('2023-10-22'), -- 1 DAYOFWEEK('2023-10-23'), -- 2 DAYOFWEEK('2023-10-24'), -- 3 DAYOFWEEK('2023-10-25'), -- 4 DAYOFWEEK('2023-10-26'), -- 5 DAYOFWEEK('2023-10-27'), -- 6 DAYOFWEEK(NOW()), -- 7 DAYOFWEEK('2023-02-00'), -- NULL DAYOFWEEK('2023-02-30'), -- NULL DAYOFWEEK('Not A DATE'), -- NULL DAYOFWEEK(NULL) -- NULL
MySQL DAYOFYEAR() 函数返回一个从 1 到 366 代表给定日期是一年中的第几天的数字。
语法:
DAYOFYEAR(expr)
参数说明:
返回值:
示例:
SELECT DAYOFYEAR('2023-10-21'), -- 294 DAYOFYEAR('2023-10-22'), -- 295 DAYOFYEAR(NOW()), -- 294 DAYOFWEEK('2023-02-00'), -- NULL DAYOFWEEK('2023-02-30'), -- NULL DAYOFWEEK('Not A DATE'), -- NULL DAYOFWEEK(NULL) -- NULL
MySQL FROM_DAYS() 函数将指定的天数转为日期并返回。FROM_DAYS() 函数与 TO_DAYS() 函数是相反的。
语法:
FROM_DAYS(days)
参数说明:
返回值:
示例:
SELECT FROM_DAYS(739179), -- 2023-10-21 FROM_DAYS(739180); -- 2023-10-22
MySQL TO_DAYS() 函数将指定日期转为距离 0 年的天数并返回。TO_DAYS() 函数与 FROM_DAYS() 函数是相反的。
语法:
TO_DAYS(date)
参数说明:
返回值:
示例:
SELECT TO_DAYS('2023-10-21'), -- 739179 TO_DAYS(now()); -- 739180
MySQL LAST_DAY() 函数返回指定的日期或者日期时间所在当月的最后一天。
语法:
LAST_DAY(date)
参数说明:
返回值:
示例:
SELECT LAST_DAY('2019-02-01'), -- 2019-02-28 LAST_DAY('2020-02-01'), -- 2020-02-28 LAST_DAY('2021-02-01'), -- 2021-02-28 LAST_DAY('2022-02-01'), -- 2022-02-28 LAST_DAY('2023-02-01 10:11:12'), -- 2023-02-28 LAST_DAY(NOW()) -- 2023-10-31
MySQL DATE() 函数从日期时间表达式中提取日期部分并返回。
语法:
DATE(expr)
参数说明:
返回值:
示例:
SELECT DATE('2023-10-22'), -- 2023-10-22 DATE('2023-10-22 11:11:11'), -- 2023-10-22 DATE(NOW()), -- 2023-10-22 DATE('2023-02-30'), -- NULL DATE('Not A Date'), -- NULL DATE(NULL) -- NULL
MySQL DATE_ADD() 函数在指定的日期/时间上加上指定到时间间隔加并返回新的日期/时间。
语法:
DATE_ADD(date, INTERVAL value unit)
参数说明:
返回值:
示例:
SELECT NOW(6), -- 2023-10-22 12:33:16.021752 DATE_ADD(NOW(6), INTERVAL 5 YEAR), -- 2028-10-22 12:33:16.021752 DATE_ADD(NOW(6), INTERVAL 5 QUARTER), -- 2025-01-22 12:33:16.021752 DATE_ADD(NOW(6), INTERVAL 5 MONTH), -- 2024-03-22 12:33:16.021752 DATE_ADD(NOW(6), INTERVAL 5 WEEK), -- 2023-11-25 12:33:16.021752 DATE_ADD(NOW(6), INTERVAL 5 DAY), -- 2023-10-26 12:33:16.021752 DATE_ADD(NOW(6), INTERVAL 5 HOUR), -- 2023-10-22 17:33:16.021752 DATE_ADD(NOW(6), INTERVAL 5 MINUTE), -- 2023-10-22 12:38:16.021752 DATE_ADD(NOW(6), INTERVAL 5 SECOND), -- 2023-10-22 12:33:21.021752 DATE_ADD(NOW(6), INTERVAL 5 MICROSECOND), -- 2023-10-22 12:33:16.021757 DATE_ADD(NOW(6), INTERVAL 5 YEAR_MONTH), -- 2024-03-22 12:33:16.021752 DATE_ADD(NOW(6), INTERVAL 5 DAY_HOUR), -- 2023-10-22 17:33:16.021752 DATE_ADD(NOW(6), INTERVAL 5 DAY_MINUTE), -- 2023-10-22 12:38:16.021752 DATE_ADD(NOW(6), INTERVAL 5 DAY_SECOND), -- 2023-10-22 12:33:21.021752 DATE_ADD(NOW(6), INTERVAL 5 DAY_MICROSECOND), -- 2023-10-22 12:33:16.521752 DATE_ADD(NOW(6), INTERVAL 5 HOUR_MINUTE), -- 2023-10-22 12:38:16.021752 DATE_ADD(NOW(6), INTERVAL 5 HOUR_SECOND), -- 2023-10-22 12:33:21.021752 DATE_ADD(NOW(6), INTERVAL 5 HOUR_MICROSECOND), -- 2023-10-22 12:33:16.521752 DATE_ADD(NOW(6), INTERVAL 5 MINUTE_SECOND), -- 2023-10-22 12:33:21.021752 DATE_ADD(NOW(6), INTERVAL 5 MINUTE_MICROSECOND),-- 2023-10-22 12:33:16.521752 DATE_ADD(NOW(6), INTERVAL 5 SECOND_MICROSECOND) -- 2023-10-22 12:33:16.521752
MySQL DATE_FORMAT() 函数按照指定的格式格式化日期时间。
语法:
DATE_FORMAT(date, format)
参数说明:
返回值:
示例:
SELECT DATE_FORMAT('2023-10-24', '%Y'), -- 2023 DATE_FORMAT('2023-10-24', '%W'), -- Tuesday DATE_FORMAT('2023-02-01', '%M %d, %Y'), -- February 01, 2022 DATE_FORMAT('2023-02-01', '%M %e %Y'), -- February 1 2023 DATE_FORMAT('2023-02-28', '%W, %M %e, %Y'), -- Tuesday, February 28, 2023 DATE_FORMAT(NOW(), '%Y%m%d%H%i%S') -- 20231022181622
MySQL DATE_SUB() 函数在指定的日期/时间上减去指定到时间间隔加并返回新的日期/时间。
语法:
DATE_SUB(date, INTERVAL value unit)
参数说明:
返回值:
示例:
SELECT DATE_SUB('2023-10-22', INTERVAL 10 DAY), -- 2023-10-12 DATE_SUB('2023-10-22', INTERVAL 10 HOUR), -- 2023-10-21 14:00:00 DATE_SUB('2023-10-22 14:00:00', INTERVAL 10 HOUR), -- 2023-10-22 04:00:00 DATE_SUB('2023-10-22 14:00:00', INTERVAL 10 MINUTE),-- 2023-10-22 13:50:00 DATE_SUB(CURDATE(), INTERVAL 10 HOUR), -- 2023-10-21 14:00:00 DATE_SUB(NOW(), INTERVAL 10 MINUTE) -- 2023-10-22 14:18:03
MySQL DATEDIFF() 函数返回两个日期值之间的天数。
语法:
DATEDIFF(date1, date2)
参数说明:
返回值:
示例:
SELECT DATEDIFF('2023-10-22', '2023-10-28'), -- 06 DATEDIFF('2023-10-22', '2023-10-28 10:10:10'), -- -6 DATEDIFF('2023-10-22 10:10:10', '2023-10-28'), -- -6 DATEDIFF('2023-10-22', '2023-10-27'), -- -5 DATEDIFF('2023-10-22', '2023-10-27 10:10:10'), -- -5 DATEDIFF('2023-10-22 10:10:10', '2023-10-27'), -- -5 DATEDIFF('2023-10-22', '2023-10-28 10:10:10'), -- -6 DATEDIFF('Not A DATEDIFF', 'Not A DATEDIFF'), -- NULL DATEDIFF(NULL, '2023-10-22'), -- NULL DATEDIFF(NOW(), '2023-10-18') -- 4 DATEDIFF(NOW(), '2023-10-20'), -- 2 DATEDIFF(CURDATE(), '2023-10-20'), -- 2 DATEDIFF(CURRENT_DATE(), '2023-10-20'), -- 2 DATEDIFF(SYSDATE(), '2023-10-20') -- 2
MySQL ADDDATE() 函数在指定的日期/时间上加上指定到时间间隔加并返回新的日期/时间。
语法:
ADDDATE(date, days) ADDDATE(date, INTERVAL value unit)
参数说明:
返回值:
示例:
SELECT ADDDATE('2023-10-22', 10), -- 2023-11-01 ADDDATE('2023-10-22', -10), -- 2023-10-12 ADDDATE('2023-10-22', INTERVAL 10 DAY), -- 2023-11-01 ADDDATE('2023-10-22', INTERVAL 10 HOUR), -- 2023-10-22 10:00:00 ADDDATE('2023-10-22 10:00:00', INTERVAL 10 HOUR), -- 2023-10-22 20:00:00 ADDDATE('2023-10-22 10:00:00', INTERVAL 10 MINUTE), -- 2023-10-22 10:10:00 ADDDATE(CURDATE(), INTERVAL 10 HOUR), -- 2023-10-22 10:00:00 ADDDATE(NOW(), INTERVAL 10 MINUTE) -- 2023-10-22 15:58:07
MySQL MAKEDATE() 函数根据年份和一年中天数创建一个日期并返回。
语法:
MAKEDATE(year, day_of_year)
参数说明:
返回值:
示例:
SELECT MAKEDATE(2023, 1), -- 2023-01-01 MAKEDATE(2023, 31), -- 2023-01-31 MAKEDATE(2023, 32), -- 2023-02-01 MAKEDATE(2023, 0) -- NULL
MySQL STR_TO_DATE() 函数将指定的字符串根据指定日期格式转为日期/时间。 STR_TO_DATE() 函数与 DATE_FORMAT() 函数是相反的。
语法:
STR_TO_DATE(str, format)
参数说明:
返回值:
示例:
SELECT STR_TO_DATE('2023/10/24', '%Y/%m/%d'), -- 2023-10-24 STR_TO_DATE('2023/10/24 10:10:10', '%Y/%m/%d %H:%i:%S'), -- 2023-10-24 10:10:10 STR_TO_DATE('2023/10/24 10:10:10', 'abc'), -- NULL STR_TO_DATE('2023/10/24 10:10:10', NULL) -- NULL
MySQL SUBDATE() 函数在指定的日期/时间上减去指定到时间间隔加并返回新的日期/时间。
语法:
SUBDATE(date, days) SUBDATE(date, INTERVAL value unit)
参数说明:
返回值:
示例:
SELECT SUBDATE('2023-10-24', 10), -- 2023-10-14 SUBDATE('2023-10-24', -10), -- 2023-11-03 SUBDATE('2023-10-24', INTERVAL 10 DAY), -- 2023-10-14 SUBDATE('2023-10-24', INTERVAL 10 HOUR), -- 2023-10-23 14:00:00 SUBDATE('2023-10-24 10:24:00', INTERVAL 10 HOUR), -- 2023-10-24 00:24:00 SUBDATE('2023-10-24 10:24:00', INTERVAL 10 MINUTE), -- 2023-10-24 10:14:00 SUBDATE(CURDATE(), INTERVAL 10 HOUR), -- 2023-10-21 14:00:00 SUBDATE(NOW(), INTERVAL 10 MINUTE) -- 2023-10-22 09:29:34
语法:
TIME(expr)
参数说明:
返回值:
示例:
SELECT TIME('11:11:11'), -- 11:11:11 TIME('2023-02-28 11:11:11'), -- 11:11:11 TIME('11:11:11.001112'), -- 11:11:11 TIME('2023-02-28 11:11:11'), -- 11:11:11 TIME(NOW()), -- 18:19:05 TIME('Not A Date'), -- 00:00:00 TIME(NULL) -- null
MySQL TIME_FORMAT() 函数按照指定的格式格式化时间。
语法:
TIME_FORMAT(time, format)
参数说明:
返回值:
示例:
SELECT TIME_FORMAT("14:30:10", "%H %i %s"), -- 14 30 10 TIME_FORMAT("14:30:10", "%h %i %s %p"), -- 02 30 10 PM TIME_FORMAT("14:30:10", "%r"), -- 02:30:10 PM TIME_FORMAT("14:30:10", "%T"), -- 14:30:10 TIME_FORMAT("14:30:10", "%H %i %s") -- 14 30 10
MySQL TIME_TO_SEC() 函数将指定的时间值转为秒数。
语法:
TIME_TO_SEC(time)
参数说明:
返回值:
示例:
SELECT TIME_TO_SEC('14:14:10') `14:14:10`, -- 51250 TIME_TO_SEC('14:14') `14:14`, -- 51240 TIME_TO_SEC('14') `14`; -- 14
MySQL TIMEDIFF() 函数返回两个时间之间的差值。
语法:
TIMEDIFF(time1, time2)
参数说明:
返回值:
示例:
SELECT TIMEDIFF('14:14:14', '14:10:10'), -- 00:04:04 TIMEDIFF('14:14:14', '10:10:10'), -- 04:04:04 TIMEDIFF('2023-10-28 12:12:12', '2023-10-21 10:10:10'), -- 170:02:02 TIMEDIFF(NOW(), '2023-10-28 10:10:10') -- -139:18:40
MySQL TIMESTAMP() 函数累加所有参数并将结果作为日期时间值返回。
语法:
TIMESTAMP(date_or_datetime) TIMESTAMP(date_or_datetime, time)
参数说明:
返回值:
示例:
SELECT TIMESTAMP('2023-10-22'), -- 2023-10-22 00:00:00 TIMESTAMP('2023-10-22', '10:10:10'), -- 2023-10-22 10:10:10 TIMESTAMP('2023-10-22 12:00:00', '12:00:00') -- 2023-10-23 00:00:00
MySQL TIMESTAMPADD() 函数将指定的时间间隔加到一个日期时间值上并返回结果。
语法:
TIMESTAMPADD(unit, interval, datetime)
参数说明:
返回值:
示例:
SELECT TIMESTAMPADD(WEEK, 1, '2023-10-22'), -- 2023-10-29 TIMESTAMPADD(DAY, 7, '2023-10-22'), -- 2023-10-29 TIMESTAMPADD(SECOND, 10, '2023-10-22'); -- 2023-10-22 00:00:10
MySQL TIMESTAMPDIFF() 函数返回两个日期时间之间的时间间隔。
语法:
TIMESTAMPDIFF(unit, datetime1, datetime2)
参数说明:
返回值:
示例:
SELECT TIMESTAMPDIFF(YEAR, '2022-1-28', '2023-10-22'), -- 1 TIMESTAMPDIFF(MONTH, '2022-02-28', '2023-10-22'),-- 19 TIMESTAMPDIFF(MONTH, '2023-02-28', '2023-10-22') -- 7
MySQL ADDTIME() 函数在指定的时间上加上指定的时间间隔并返回结果。
语法:
ADDTIME(timeExpr1, timeExpr2)
参数说明:
返回值:
示例:
SELECT ADDTIME('2023-10-10 10:10:10', 10), -- 2023-10-10 10:10:20 ADDTIME('14:10:10', 10), -- 14:10:20 ADDTIME('14:10:10', 100), -- 14:11:10 ADDTIME('14:10:10', '100'), -- 14:11:10 ADDTIME('14:10:10', '0:01:00'), -- 14:11:10 ADDTIME('14:00:00', '01:10:10.000010'), -- 15:10:10.000010 ADDTIME('14:00:00', '-01:10:10.000010'), -- 12:49:49.999990 SUBTIME('14:00:00', '01:10:10.000010') -- 12:49:49.999990
MySQL LOCALTIME() 函数按 YYYY-MM-DD hh:mm:ss 格式返回当前时间和日期。
LOCALTIME() 函数与 NOW() 函数完全相同。
语法:
LOCALTIME LOCALTIME()
返回值:
示例:
SELECT LOCALTIME, -- 2023-10-22 08:20:38 LOCALTIME + 1, -- 20231022082039 LOCALTIME(), -- 2023-10-22 08:20:38 LOCALTIME() + 1; -- 20231022082039
MySQL LOCALTIMESTAMP() 函数按 YYYY-MM-DD hh:mm:ss 格式返回当前时间和日期。
LOCALTIMESTAMP() 函数与 NOW() 函数完全相同。
语法:
LOCALTIMESTAMP LOCALTIMESTAMP()
返回值:
示例:
SELECT LOCALTIMESTAMP, -- 2023-10-22 08:23:48 LOCALTIMESTAMP + 1, -- 20231022082349 LOCALTIMESTAMP(), -- 2023-10-22 08:23:48 LOCALTIMESTAMP() + 1 -- 20231022082349
MySQL MAKETIME() 函数指定的时、分、秒创建一个时间并返回。
语法:
MAKETIME(hour, minute, second)
参数说明:
返回值:
示例:
SELECT MAKETIME(10, 11, 12), -- 10:11:12 MAKETIME(100, 11, 12), -- 100:11:12 MAKETIME(839, 11, 12), -- 838:59:59 MAKETIME(-999, 11, 12), -- -838:59:59 MAKETIME(10, 11, 12), -- 10:11:12 MAKETIME(10, 60, 12), -- NULL MAKETIME(10, 11, 75) -- NULL
MySQL SEC_TO_TIME() 函数将指定的秒数转为一个格式为 HH:MM:SS 的时间值。
语法:
SEC_TO_TIME(seconds)
参数说明:
返回值:
示例:
SELECT SEC_TO_TIME(100), -- 00:01:40 SEC_TO_TIME(3600), -- 01:00:00 SEC_TO_TIME(-72000); -- -20:00:00
MySQL SUBTIME() 函数在指定的时间上减去指定的时间间隔并返回结果。
语法:
SUBTIME(timeExpr1, timeExpr2)
参数说明:
返回值:
示例:
SELECT SUBTIME('2023-12-24 10:10:24', 10), -- 2023-12-24 10:10:14 SUBTIME('10:10:24', 10), -- 10:10:14 SUBTIME('10:10:24', 100), -- 10:09:24 SUBTIME('10:10:24', '100'), -- 10:09:24 SUBTIME('10:10:24', '0:01:00'), -- 10:09:24 SUBTIME('10:00:24', '01:10:10.000010'), -- 08:50:13.999990 SUBTIME('10:00:24', '-01:10:10.000010'), -- 11:10:34.000010 ADDTIME('10:00:24', '01:10:10.000010') -- 11:10:34.000010
MySQL UNIX_TIMESTAMP() 函数将指定的日期/日期时间转为 UNIX 时间戳值。 UNIX 时间戳值是距离 UTC 时间 1970-01-01 00:00:00 的秒数。
语法:
UNIX_TIMESTAMP() UNIX_TIMESTAMP(date_or_datetime)
参数说明:
返回值:
示例:
SELECT UNIX_TIMESTAMP(), -- 1697968385 UNIX_TIMESTAMP(NOW()), -- 1697968385 UNIX_TIMESTAMP(NULL) -- NULL
MySQL CURDATE() 函数按 YYYY-MM-DD 或 YYYYMMDD 格式返回系统的当前日期。
CURDATE() 函数与 CURRENT_DATE() 函数完全相同。
语法:
CURDATE()
返回值:
示例:
SELECT CURDATE(), -- 2023-10-22 CURDATE() + 0, -- 20231022 CURDATE() + 1; -- 20231023
MySQL CURRENT_DATE() 函数按 YYYY-MM-DD 或 YYYYMMDD 格式返回系统的当前日期。
CURDATE() 函数与 CURRENT_DATE() 函数完全相同。
语法:
CURRENT_DATE CURRENT_DATE()
返回值:
示例:
SELECT CURRENT_DATE, -- 2023-10-22 CURRENT_DATE + 1, -- 20231023 CURRENT_DATE(), -- 2023-10-22 CURRENT_DATE() + 0, -- 20231022 CURRENT_DATE() + 1; -- 20231023
MySQL CURRENT_TIME() 函数按 hh:mm:ss 格式返回系统的当前时间。
CURRENT_TIME() 函数与 CURTIME() 函数完全相同。
语法:
CURRENT_TIME CURRENT_TIME()
返回值:
示例:
SELECT CURRENT_TIME, -- 15:28:58 CURRENT_TIME + 1, -- 152859 CURRENT_TIME(), -- 15:28:58 CURRENT_TIME() + 0, -- 152858 CURRENT_TIME() + 1 -- 152859
MySQL CURRENT_TIMESTAMP() 函数按 YYYY-MM-DD hh:mm:ss 格式返回当前时间和日期。
CURRENT_TIMESTAMP() 函数与 NOW() 函数完全相同。
语法:
CURRENT_TIMESTAMP CURRENT_TIMESTAMP()
返回值:
示例:
SELECT CURRENT_TIMESTAMP, -- 2023-10-22 15:32:40 CURRENT_TIMESTAMP + 1, -- 20231022153241 CURRENT_TIMESTAMP(), -- 2023-10-22 15:32:40 CURRENT_TIMESTAMP() + 0, -- 20231022153240 CURRENT_TIMESTAMP() + 1; -- 20231022153241
MySQL CURTIME() 函数按 hh:mm:ss 格式返回系统的当前时间。
CURTIME() 函数与 CURRENT_TIME() 函数完全相同。
语法:
CURTIME()
返回值:
示例:
SELECT CURTIME(), -- 15:39:13 CURTIME() + 0, -- 153913 CURTIME() + 1 -- 153914
MySQL MICROSECOND() 函数提取时间或日期时间中的微秒部分部分并作为数字返回。
语法:
MICROSECOND(time)
参数说明:
返回值:
示例:
SELECT MICROSECOND('10:11:12.000334'), -- 334 MICROSECOND('2023-10-24 10:11:12.000334'), -- 334 MICROSECOND('2023-10-24') -- 0
MySQL SECOND() 函数提取并返回时间的秒部分。
语法:
SECOND(time)
参数说明:
返回值:
示例:
SELECT SECOND('10:11:12'), -- 12 SECOND('2023-10-24 10:11:12') -- 12
MySQL MINUTE() 函数提取并返回时间的分钟部分。
语法:
MINUTE(time)
参数说明:
返回值:
示例:
SELECT MINUTE('14:11:12'), -- 11 MINUTE('2023-10-24 14:11:12') -- 11
MySQL HOUR() 函数提取并返回时间的小时部分。
语法:
HOUR(time)
参数说明:
返回值:
示例:
SELECT HOUR('10:10:10'), -- 10 HOUR('2023-10-24 10:10:10'), -- 10 HOUR('123:10:10'), -- 123 HOUR('1234:10:10'), -- 838 MySQL 支持的最大时间是 838:59:59 HOUR('2023-10-24'), -- 0 不正确的时间格式 HOUR('2023-10-31'), -- 0 不正确的时间格式 HOUR('Not A DATE'), -- 0 不正确的时间格式 HOUR(NULL) -- NULL
MySQL DAY() 函数返回日期时间表达式中的代表月份中的一天的数字。此函数等同于 DAYOFMONTH() 函数。
语法:
DAY(expr)
参数说明:
返回值:
示例:
SELECT DAY('2023-10-21'), -- 21 DAY('2023-10-21 09:10:10'), -- 21 DAY(NOW()), -- 21 DAY('2023-02-00'), -- 0 DAY('2023-02-30'), -- NULL DAY('Not A DATE'), -- NULL DAY(NULL) -- NULL
MySQL MONTH() 函数提取日期的月份部分并作为数字返回。
语法:
MONTH(date)
参数说明:
返回值:
示例:
SELECT MONTH('2023-10-24'), -- 10 MONTH('2023-10-24 14:11:12') -- 10
MySQL QUARTER() 函数返回一个指定日期所在季度值。
语法:
QUARTER(date)
参数说明:
返回值:
示例:
SELECT QUARTER('2023-10-24'), -- 4 QUARTER('2023-10-24 10:11:12') -- 4
MySQL YEAR() 函数提取日期的年份部分并作为数字返回。
语法:
YEAR(date)
参数说明:
返回值:
示例:
SELECT YEAR('2023-10-24'), -- 2023 YEAR('2023-10-24 10:11:12'), -- 2023 YEAR('0000-01-01'), -- 0 YEAR('abc') -- NULL
MySQL TO_SECONDS() 函数将指定的日期/日期时间转为距离 0 年的秒数并返回结果。
语法:
TO_SECONDS(date_or_datetime)
参数说明:
返回值:
示例:
SELECT TO_SECONDS('2023-10-24'), -- 63865324800 TO_SECONDS('2023-10-24 10:10:14') -- 63865361414
MySQL MONTHNAME() 函数返回给定日期的月份的名字。
语法:
MONTHNAME(date)
参数说明:
返回值:
示例:
SELECT MONTHNAME('2023-10-01'), -- October MONTHNAME('2023-11-01'), -- November MONTHNAME('2023-12-01'), -- December MONTHNAME('2024-01-01'), -- January MONTHNAME('2024-02-01'), -- February MONTHNAME('2024-03-01'), -- March MONTHNAME('2024-04-01'), -- April MONTHNAME('2024-05-01'), -- May MONTHNAME('2024-06-01'), -- June MONTHNAME('2024-07-01'), -- July MONTHNAME('2024-08-01'), -- August MONTHNAME('2024-09-01'), -- September MONTHNAME('Not A DATE'), -- NULL MONTHNAME(NULL) -- NULL
MySQL PERIOD_ADD() 函数在指定年月上加上指定的月数将结果作为年月返回。
语法:
PERIOD_ADD(period, month_number)
参数说明:
返回值:
示例:
SELECT PERIOD_ADD(202301, 1), -- 202302 PERIOD_ADD(202301, 2), -- 202303 PERIOD_ADD(202301, 3), -- 202304 PERIOD_ADD(202301, 4), -- 202305 PERIOD_ADD(202301, 5), -- 202306 PERIOD_ADD(202301, 6), -- 202307 PERIOD_ADD(202301, 7), -- 202308 PERIOD_ADD(202301, 8), -- 202309 PERIOD_ADD(202301, 9), -- 202310 PERIOD_ADD(202301, 10), -- 202311 PERIOD_ADD(202301, 11), -- 202312 PERIOD_ADD(202301, 12) -- 202401
MySQL PERIOD_DIFF() 函数返回两个通过年月指定的时期之间相差的月数。
语法:
PERIOD_DIFF(period1, period2)
参数说明:
返回值:
示例:
SELECT PERIOD_DIFF(202302, 202301), -- 1 PERIOD_DIFF(202303, 202301), -- 2 PERIOD_DIFF(202304, 202301), -- 3 PERIOD_DIFF(202305, 202301), -- 4 PERIOD_DIFF(202306, 202301), -- 5 PERIOD_DIFF(202307, 202301), -- 6 PERIOD_DIFF(202308, 202301), -- 7 PERIOD_DIFF(202309, 202301), -- 8 PERIOD_DIFF(202310, 202301), -- 9 PERIOD_DIFF(202311, 202301), -- 10 PERIOD_DIFF(202312, 202301), -- 11 PERIOD_DIFF(202301, 202301) -- 0
MySQL CONVERT_TZ() 函数将一个时区的时间转为另一个时区的时间并返回。
语法:
CONVERT_TZ(datetime, fromTimeZone, toTimeZone)
参数说明:
返回值:
示例:
SELECT CONVERT_TZ('2023-10-22 14:00:00', 'GMT', 'MET'), -- 2023-10-22 16:00:00 CONVERT_TZ('2023-10-22 14:00:00', 'GMT', '+01:00'), -- 2023-10-22 15:00:00 CONVERT_TZ('2023-10-22 14:00:00', 'GMT', '-01:00'), -- 2023-10-22 13:00:00 CONVERT_TZ('2023-10-22 14:00:00', 'GMT', '-03:00') -- 2023-10-22 11:00:00
UTC函数有:
UTC_DATE、UTC_DATE() 函数:与DATE函数相似(UTC_DATE少8个小时)详见 7.1
UTC_TIME、UTC_TIME() 函数:与TIME函数相似(UTC_DATE少8个小时)详见 8.1
UTC_TIMESTAMP、UTC_TIMESTAMP() 函数:与TIMESTAMP函数相似(UTC_DATE少8个小时)详见 8.5