当前位置:网站首页>内置函数时间日期函数
内置函数时间日期函数
2022-07-27 17:40:00 【华为云】
11.4 日期和时间函数
MySQL中内置了大量的日期和时间函数,能够灵活、方便地处理日期和时间数据,本节就简单介绍一下MySQL中内置的日期和时间函数。
11.4.1 CURDATE()函数
CURDATE()函数用于返回当前日期,只包含年、月、日部分,格式为YYYY-MM-DD。使用示例如下:
mysql> SELECT CURDATE();+------------+| CURDATE() |+------------+| 2019-12-11 |+------------+1 row in set (0.00 sec)CURRENT_DATE()函数的作用与CURDATE()函数相同,不再赘述。
11.4.2 CURTIME()函数
CURTIME()函数用于返回当前时间,只包含时、分、秒部分,格式为HH:MM:SS。使用示例如下:
mysql> SELECT CURTIME();+-----------+| CURTIME() |+-----------+| 11:27:44 |+-----------+1 row in set (0.00 sec)CURRENT_TIME()函数的作用与CURTIME函数相同,不再赘述。
11.4.3 NOW()函数
NOW()函数用于返回当前日期和时间,包含年、月、日、时、分、秒,格式为YYYY-MM-DD HH:MM:SS。使用示例如下:
mysql> SELECT NOW();+---------------------+| NOW() |+---------------------+| 2019-12-15 11:29:22 |+---------------------+1 row in set (0.00 sec)CURRENT_TIMESTAMP()函数、LOCALTIME()函数、LOCALTIMESTAMP()函数、SYSDATE()函数的作用与NOW()函数相同,不再赘述。
11.4.4 UNIX_TIMESTAMP(date)函数
将date转化为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)11.4.5 FROM_UNIXTIME(timestamp)函数
FROM_UNIXTIME(timestamp)函数将UNIX时间戳转化为日期时间,格式为YYYY-MM-DD HH:MM:SS,与UNIX_TIMESTAMP(date)函数互为反函数。使用示例如下:
mysql> SELECT FROM_UNIXTIME(1576380910);+---------------------------+| FROM_UNIXTIME(1576380910) |+---------------------------+| 2019-12-15 11:35:10 |+---------------------------+1 row in set (0.00 sec)11.4.6 UTC_DATE()函数
UTC_DATE()函数用于返回UTC日期。使用示例如下:
mysql> SELECT UTC_DATE();+------------+| UTC_DATE() |+------------+| 2019-12-15 |+------------+1 row in set (0.00 sec)也可以返回YYYYMMDD格式的日期。使用示例如下:
mysql> SELECT UTC_DATE()+0;+--------------+| UTC_DATE()+0 |+--------------+| 20191215 |+--------------+1 row in set (0.00 sec)11.4.7 UTC_TIME()函数
UTC_TIME()函数用于返回UTC时间。使用示例如下:
mysql> SELECT UTC_TIME();+------------+| UTC_TIME() |+------------+| 06:39:00 |+------------+1 row in set (0.00 sec)11.4.8 YEAR(date)函数
YEAR(date)函数用于返回日期所在的年份,取值返回为1970~2069。使用示例如下:
mysql> SELECT YEAR(NOW());+-------------+| YEAR(NOW()) |+-------------+| 2019 |+-------------+1 row in set (0.00 sec)注意:00~69会被转化为2000~2069,70~99会被转化为1970~1999。
11.4.9 MONTH(date)函数
MONTH(date)函数用于返回日期对应的月份,取值返回为1~12。使用示例如下:
mysql> SELECT MONTH(NOW());+--------------+| MONTH(NOW()) |+--------------+| 12 |+--------------+1 row in set (0.00 sec)11.4.10 MONTHNAME(date)函数
MONTHNAME(date)函数用于返回日期所在月份的英文名称。使用示例如下:
mysql> SELECT MONTHNAME(NOW());+------------------+| MONTHNAME(NOW()) |+------------------+| December |+------------------+1 row in set (0.00 sec)11.4.11 DAY(date)函数
DAY(date)函数只返回日期。使用示例如下:
mysql> SELECT DAY(NOW());+------------+| DAY(NOW()) |+------------+| 15 |+------------+1 row in set (0.00 sec)11.4.12 DAYNAME(date)函数
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)11.4.13 DAYOFWEEK(date)函数
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)11.4.14 WEEKDAY(date)函数
WEEKDAY(date)函数返回日期对应的一周中的索引值。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)11.4.15 WEEK(date)函数
WEEK(date)函数返回给定日期是一年中的第几周。使用示例如下:
mysql> SELECT WEEK(NOW());+-------------+| WEEK(NOW()) |+-------------+| 50 |+-------------+1 row in set (0.00 sec)11.4.16 WEEKOFYEAR(date)函数
WEEKOFYEAR(date)函数返回日期位于一年中的第几周。使用示例如下:
mysql> SELECT WEEKOFYEAR(NOW());+-------------------+| WEEKOFYEAR(NOW()) |+-------------------+| 50 |+-------------------+1 row in set (0.00 sec)11.4.17 DAYOFYEAR(date)函数
DAYOFYEAR(date)函数返回日期是一年中的第几天。使用示例如下:
mysql> SELECT DAYOFYEAR(NOW());+------------------+| DAYOFYEAR(NOW()) |+------------------+| 349 |+------------------+1 row in set (0.00 sec)11.4.18 DAYOFMONTH(date)函数
DAYOFMONTH(date)函数返回日期位于所在月份的第几天。使用示例如下:
mysql> SELECT DAYOFMONTH(NOW());+-------------------+| DAYOFMONTH(NOW()) |+-------------------+| 15 |+-------------------+1 row in set (0.00 sec)11.4.19 QUARTER(date)函数
QUARTER(date)函数返回日期对应的季度,范围为1~4。使用示例如下:
mysql> SELECT QUARTER(NOW());+----------------+| QUARTER(NOW()) |+----------------+| 4 |+----------------+1 row in set (0.00 sec)11.4.20 HOUR(time)函数
HOUR(time)函数返回指定时间的小时。使用示例如下:
mysql> SELECT HOUR(NOW());+-------------+| HOUR(NOW()) |+-------------+| 11 |+-------------+1 row in set (0.00 sec)11.4.21 MINUTE(time)函数
MINUTE(time)函数返回指定时间的分钟,取值范围0~59。使用示例如下:
mysql> SELECT MINUTE(NOW());+---------------+| MINUTE(NOW()) |+---------------+| 45 |+---------------+1 row in set (0.00 sec)11.4.22 SECOND(time)函数
SECOND(time)函数返回指定时间的秒数,取值范围0~59。使用示例如下:
mysql> SELECT SECOND(NOW());+---------------+| SECOND(NOW()) |+---------------+| 22 |+---------------+1 row in set (0.00 sec)11.4.23 EXTRACT(type FROM date)函数
EXTRACT(type FROM date)函数返回指定日期中特定的部分,type指定返回的值。其中,type的取值如表11-1所示。
表11-1 EXTRACT(type FROM date)函数中type的取值与含义


注意:当EXTRACT(type FROM date)函数中的type取值为MINUTE_SECOND时,表示返回分钟和秒值,当date中的分钟为12,秒为12时,返回的结果为1212。也就是说,将分钟后面直接拼接上秒值。type取值为其他带有下划线的值时,也遵循同样的规律。
使用示例如下:
mysql> SELECT EXTRACT(HOUR_MINUTE FROM NOW());+---------------------------------+| EXTRACT(HOUR_MINUTE FROM NOW()) |+---------------------------------+| 2142 |+---------------------------------+1 row in set (0.00 sec)11.4.24 TIME_TO_SEC(time)函数
TIME_TO_SEC(time)函数将time转化为秒并返回结果值。转化的公式为:小时*3600+分钟*60+秒。使用示例如下:
mysql> SELECT TIME_TO_SEC(NOW());+--------------------+| TIME_TO_SEC(NOW()) |+--------------------+| 78774 |+--------------------+1 row in set (0.00 sec)11.4.25 SEC_TO_TIME(seconds)函数
SEC_TO_TIME(seconds)函数将seconds描述转化为包含小时、分钟和秒的时间。使用示例如下:
mysql> SELECT SEC_TO_TIME(78774);+--------------------+| SEC_TO_TIME(78774) |+--------------------+| 21:52:54 |+--------------------+1 row in set (0.12 sec)11.4.26 DATE_ADD(date,INTERVAL expr type)函数
DATE_ADD(date,INTERVAL expr type)函数返回与date相差INTERVAL时间间隔的日期,本质上是日期的加操作。该函数中的type是间隔的类型,间隔类型如表11-2所示。
表11-2 DATE_ADD(date,INTERVAL expr type)函数中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(date,INTERVAL expr type)函数与DATE_ADD(date,INTERVAL expr type)函数的作用相同,不再赘述。
11.4.27 DATE_SUB(date,INTERVAL expr type)函数
DATE_SUB(date,INTERVAL expr type)函数返回与date相差INTERVAL时间间隔的日期,本质上是日期的减操作,其中type的取值见表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(date,INTERVAL expr type)函数与DATE_SUB(date,INTERVAL expr type)函数作用相同,不再赘述。
注意:DATE_ADD、ADDDATE、DATE_SUB和SUBDATE这4个函数均可以指定负值。
11.4.28 ADDTIME(time1,time2)函数
ADDTIME(time1,time2)函数返回time1加上time2的时间。其中,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秒之后的时间。
ADDTIME(time1,time2)函数中的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秒之后的时间。
11.4.29 SUBTIME(time1,time2)函数
SUBTIME(time1,time2)函数返回time1减去time2后的时间。其中,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)11.4.30 DATEDIFF(date1,date2)函数
DATEDIFF(date1,date2)函数计算两个日期之间相差的天数。使用示例如下:
mysql> SELECT DATEDIFF(NOW(), '1970-01-01');+-------------------------------+| DATEDIFF(NOW(), '1970-01-01') |+-------------------------------+| 18245 |+-------------------------------+1 row in set (0.00 sec)11.4.31 FROM_DAYS(N)函数
FROM_DAYS(N)函数返回从0000年1月1日起,N天以后的日期。使用示例如下:
mysql> SELECT FROM_DAYS(366);+----------------+| FROM_DAYS(366) |+----------------+| 0001-01-01 |+----------------+1 row in set (0.00 sec)11.4.32 LAST_DAY(date)函数
LAST_DAY(date)函数返回date所在月份的最后一天的日期。使用示例如下:
mysql> SELECT LAST_DAY(NOW());+-----------------+| LAST_DAY(NOW()) |+-----------------+| 2019-12-31 |+-----------------+1 row in set (0.00 sec)11.4.33 MAKEDATE(year,n)函数
MAKEDATE(year,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)11.4.34 MAKETIME(hour,minute,second)函数
将给定的小时、分钟和秒组合成时间并返回。使用示例如下:
mysql> SELECT MAKETIME(1,1,1);+-----------------+| MAKETIME(1,1,1) |+-----------------+| 01:01:01 |+-----------------+1 row in set (0.00 sec)11.4.35 PERIOD_ADD(time,n)函数
PERIOD_ADD(time,n)函数返回time加上n后的时间。使用示例如下:
mysql> SELECT PERIOD_ADD(20200101010101,1);+------------------------------+| PERIOD_ADD(20200101010101,1) |+------------------------------+| 20200101010102 |+------------------------------+1 row in set (0.00 sec)11.4.36 TO_DAYS(date)函数
TO_DAYS(date)函数返回日期date距离0000年1月1日的天数。使用示例如下:
mysql> SELECT TO_DAYS(NOW());+----------------+| TO_DAYS(NOW()) |+----------------+| 737773 |+----------------+1 row in set (0.00 sec)11.4.37 DATE_FORMAT(date,format)函数
DATE_FORMAT(date,format)函数按照指定的格式format来格式化日期date。其中,format常用的格式符如表11-3所示。
表11-3 DATE_FORMAT(date,format)函数中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)11.4.38 TIME_FORMAT(time,format)函数
TIME_FORMAT(time,format)函数按照指定的格式format来格式化日期date。其中,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)11.4.39 GET_FORMAT(date_type,format_type)函数
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)11.4.40 STR_TO_DATE(str,format)函数
STR_TO_DATE(str,format)函数将字符串str按照format格式转化为日期或时间。其中,format的取值见表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)边栏推荐
- Dcm11- write the function and configuration of the data service ($2e) according to the identifier [based on DaVinci configurator classic]
- 电容串联与并联以及电容串联与平衡电阻
- 11.5.OSPF
- PMP practice once a day | don't get lost in the exam -7.27 (including agility + multiple choices)
- GridView (implement table display icon)
- uva1377
- C191: password compilation
- C # find perfect numbers, output daffodils and use of classes
- 真实案例,大学生接单被骗,希望大家不要被骗了【惨痛教训】
- 22年PMP考试【全真敏捷试题】
猜你喜欢
随机推荐
Version announcement | Apache Doris 1.1 release version officially released!
ECU software and hardware architecture
C171: attendance system
Normalization and standardization
C# 后台GC 的前因后果
疫情下我离职一年,收入增长了10倍
C193:评分系统
libpcap库和pcap_sendpacket接口函数了解
uva1421
C171:考勤系统
#yy关于鱼的英文学习
[paper reading] rich feature hierarchies for accurate object detection and semantic segmentation
What does bus mean
C191: password compilation
第3章 基本操作
AcWing 692. G巴士计数 差分+前缀和
Built in module 10.18
‘vite‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件
codeforces每日5题(均1500)-第二十四天
函数优先顺序








