MySQL 日期和时间函数

##

MySQL 日期和时间函数

[TOC]

1、ADDDATE

ADDDATE() 函数在指定的日期/时间上加上指定到时间间隔加并返回新的日期/时间.

ADDDATE的常见语法ADDDATE(date,INTERVAL expr unit)和 ADDDATE(date,days)

date:需要操作的日期。
days:在 date 上加上的天数。
value:时间/日期间隔。正数和负数都是允许的。
unit:时间/日期间隔的单位。
时间/日期间隔的单位可以是以下值中的一个:

MICROSECOND、SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER、YEAR、SECOND_MICROSECOND、MINUTE_MICROSECOND、

MINUTE_SECOND、HOUR_MICROSECOND、HOUR_SECOND、HOUR_MINUTE、DAY_MICROSECOND、DAY_SECOND、DAY_MINUTE、DAY_HOUR、YEAR_MONTH、

返回值
ADDDATE() 函数指定的日期/时间添加指定的时间间隔,并返回一个新的日期/时间。ADDDATE() 函数的返回值和参数有关:

如果 date 参数是 DATE 类型,并且时间间隔为 YEAR, MONTH 或者 DAY,返回 DATE。
如果 date 参数是 DATE 类型,并且时间间隔为 HOURS, MINUTES 或者 SECONDS,返回 DATETIME。
如果 date 参数是 DATETIME 类型,返回 DATETIME。
如果 date 参数是 TIME 类型,并且时间间隔为 YEAR, MONTH 或者 DAY,返回 DATETIME。
如果 date 参数是 TIME 类型,并且计算只涉及 HOURS, MINUTES 和 SECONDS 部分,返回 TIME。(开始于 MySQL 8.0.28)
其他情况下返回字符串。

如果date或者days为null。返回null.

mysql> select adddate('2023-08-05',interval 1 hour); +---------------------------------------+ | adddate('2023-08-05',interval 1 hour) | +---------------------------------------+ | 2023-08-05 01:00:00 | +---------------------------------------+ 1 row in set (0.00 sec) mysql> select adddate('2023-08-05',interval 2 day); +--------------------------------------+ | adddate('2023-08-05',interval 2 day) | +--------------------------------------+ | 2023-08-07 | +--------------------------------------+ 1 row in set (0.00 sec) mysql> select adddate('2023-08-05',1); +-------------------------+ | adddate('2023-08-05',1) | +-------------------------+ | 2023-08-06 | +-------------------------+ 1 row in set (0.00 sec)
2、ADDTIME(expr1,expr2)

ADDTIME() 函数将 timeExpr2 加到 timeExpr1 上,并返回结果。如果Expr1或者Expr2为null,则返回null,Expr2可以是正数或者负数.

mysql> select addtime('2023-08-05 9:25:00','1:35:00'); +-----------------------------------------+ | addtime('2023-08-05 9:25:00','1:35:00') | +-----------------------------------------+ | 2023-08-05 11:00:00 | +-----------------------------------------+ 1 row in set (0.00 sec) mysql> select addtime('9:25:00','1:35:00'); +------------------------------+ | addtime('9:25:00','1:35:00') | +------------------------------+ | 11:00:00 | +------------------------------+ 1 row in set (0.00 sec) mysql> select addtime('9:25:00','-1:35:00'); +-------------------------------+ | addtime('9:25:00','-1:35:00') | +-------------------------------+ | 07:50:00 | +-------------------------------+ 1 row in set (0.00 sec)
3、CONVERT_TZ(dt,from_tz,to_tz)

将一个时区的时间转为另一个时区的时间并返回,有null则返回null

这里可能会遇到没有TZ表导致出现NULL的情况

mysql> SELECT CONVERT_TZ('2023-08-05 12:30:00','GMT','MET'); +-----------------------------------------------+ | CONVERT_TZ('2023-08-05 12:30:00','GMT','MET') | +-----------------------------------------------+ | NULL | +-----------------------------------------------+ 1 row in set (0.00 sec)

解决方法:从https://dev.mysql.com/downloads/timezones.html下载timezone_2023c_posix_sql.zip解压之后导入文件即可.

[root@myd02 zoneinfo]# mysql -uroot -proot mysql < timezone_posix.sql
mysql> SELECT CONVERT_TZ('2023-08-05 12:30:00','GMT','MET'); +-----------------------------------------------+ | CONVERT_TZ('2023-08-05 12:30:00','GMT','MET') | +-----------------------------------------------+ | 2023-08-05 14:30:00 | +-----------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT CONVERT_TZ('2023-08-05 12:30:00','Asia/Chongqing','US/Pacific'); +-----------------------------------------------------------------+ | CONVERT_TZ('2023-08-05 12:30:00','Asia/Chongqing','US/Pacific') | +-----------------------------------------------------------------+ | 2023-08-04 21:30:00 | +-----------------------------------------------------------------+ 1 row in set (0.00 sec)

tz的名字在mysql.time_zone_name这里.

4、CURDATE()

按 YYYY-MM-DD 或 YYYYMMDD 格式返回系统的当前日期.

mysql> select curdate(); +------------+ | curdate() | +------------+ | 2023-08-05 | +------------+ 1 row in set (0.00 sec) mysql> select curdate()+2; +-------------+ | curdate()+2 | +-------------+ | 20230807 | +-------------+ 1 row in set (0.00 sec)
5、CURRENT_DATE, CURRENT_DATE()

CURRENT_DATE, CURRENT_DATE()和CURDATE()是同义词.

mysql> select current_date,current_date(),curdate(); +--------------+----------------+------------+ | current_date | current_date() | curdate() | +--------------+----------------+------------+ | 2023-08-05 | 2023-08-05 | 2023-08-05 | +--------------+----------------+------------+ 1 row in set (0.00 sec)
6、CURTIME([fsp])

按 hh:mm:ss 格式返回系统的当前时间,CURTIME() + N 意味着当前时间加上 N 秒,fsp代表精度,最大为6.

mysql> select curtime(),curtime(6),curtime()+5; +-----------+-----------------+-------------+ | curtime() | curtime(6) | curtime()+5 | +-----------+-----------------+-------------+ | 10:48:29 | 10:48:29.481502 | 104834 | +-----------+-----------------+-------------+ 1 row in set (0.00 sec)
7、CURRENT_TIME, CURRENT_TIME([fsp])

CURRENT_TIME, CURRENT_TIME([fsp])和CURTIME()是同义词.

mysql> select CURRENT_TIME, CURRENT_TIME(),CURTIME(); +--------------+----------------+-----------+ | CURRENT_TIME | CURRENT_TIME() | CURTIME() | +--------------+----------------+-----------+ | 10:49:47 | 10:49:47 | 10:49:47 | +--------------+----------------+-----------+ 1 row in set (0.00 sec)
8、NOW([fsp])

按YYYY-MM-DD hh:mm:ss 或者 YYYYMMDDhhmmss 格式返回当前的日期和时间,fsp代表精度,最大为6.

mysql> select now(),now()+5; +---------------------+----------------+ | now() | now()+5 | +---------------------+----------------+ | 2023-08-05 10:52:40 | 20230805105245 | +---------------------+----------------+ 1 row in set (0.00 sec)
9、CURRENT_TIMESTAMP, CURRENT_TIMESTAMP([fsp])

CURRENT_TIMESTAMP, CURRENT_TIMESTAMP([fsp])和NOW()是同义词

mysql> select CURRENT_TIMESTAMP, CURRENT_TIMESTAMP(),NOW(); +---------------------+---------------------+---------------------+ | CURRENT_TIMESTAMP | CURRENT_TIMESTAMP() | NOW() | +---------------------+---------------------+---------------------+ | 2023-08-05 10:53:42 | 2023-08-05 10:53:42 | 2023-08-05 10:53:42 | +---------------------+---------------------+---------------------+ 1 row in set (0.00 sec)
10、DATE(expr)

日期提取函数,有null则返回null.

mysql> select date('2023-08-05 10:53:42'),date(now()); +-----------------------------+-------------+ | date('2023-08-05 10:53:42') | date(now()) | +-----------------------------+-------------+ | 2023-08-05 | 2023-08-05 | +-----------------------------+-------------+ 1 row in set (0.00 sec)
11、DATEDIFF(expr1,expr2)

返回两个日期值之间的天数,有null则返回null.

mysql> select datediff('2023-08-05','2023-12-31'); +-------------------------------------+ | datediff('2023-08-05','2023-12-31') | +-------------------------------------+ | -148 | +-------------------------------------+ 1 row in set (0.00 sec)
12、DATE_ADD和 DATE_SUB

语法:DATE_ADD(date,INTERVAL expr unit), DATE_SUB(date,INTERVAL expr unit)

DATE_ADD() 函数在指定的日期/时间上加上指定到时间间隔加并返回新的日期/时间。

DATE_SUB() 函数在指定的日期/时间上减去指定到时间间隔加并返回新的日期/时间。

expr unit和ADDDATE函数一致。

mysql> select date_add('2023-08-05',interval 1 day),date_sub('2023-08-05',interval 1 day); +---------------------------------------+---------------------------------------+ | date_add('2023-08-05',interval 1 day) | date_sub('2023-08-05',interval 1 day) | +---------------------------------------+---------------------------------------+ | 2023-08-06 | 2023-08-04 | +---------------------------------------+---------------------------------------+ 1 row in set (0.00 sec)
13、DATE_FORMAT(date,format)

DATE_FORMAT() 函数按照指定的格式格式化日期时间并返回格式化后的字符串。

如果其中任何一个参数为 NULL,DATE_FORMAT() 函数将返回 NULL。格式表需查看官网,内容较多

mysql> select date_format('2023-08-05','%d@%m'); +-----------------------------------+ | date_format('2023-08-05','%d@%m') | +-----------------------------------+ | 05@08 | +-----------------------------------+ 1 row in set (0.00 sec)
14、DAYOFMONTH(date)

DAYOFMONTH() 函数返回日期时间表达式中的代表月份中的一天的数字。此函数等同于 DAY() 函数。

mysql> select dayofmonth('2023-08-05'); +--------------------------+ | dayofmonth('2023-08-05') | +--------------------------+ | 5 | +--------------------------+ 1 row in set (0.00 sec)
15、DAY()

DAY()与DAYOFMONTH() 函数作用相同。

mysql> select dayofmonth('2023-08-05'),day('2023-08-05'); +--------------------------+-------------------+ | dayofmonth('2023-08-05') | day('2023-08-05') | +--------------------------+-------------------+ | 5 | 5 | +--------------------------+-------------------+ 1 row in set (0.00 sec)
16、DAYNAME(date)

DAYNAME() 函数返回给定日期的工作日名称(星期几,英文), 如果参数为 NULL或者日期不对,则返回NULL.

mysql> select dayname('2023-08-05'); +-----------------------+ | dayname('2023-08-05') | +-----------------------+ | Saturday | +-----------------------+ 1 row in set (0.00 sec)
17、DAYOFWEEK(date)

DAYOFWEEK() 函数返回给定日期的工作日的索引,和时区设置有关.

mysql> select dayofweek('2023-08-05'); +-------------------------+ | dayofweek('2023-08-05') | +-------------------------+ | 7 | +-------------------------+ 1 row in set (0.00 sec)
18、DAYOFYEAR(date)

函数返回一个从 1 到 366 代表给定日期是一年中的第几天的数字,参数有NULL则返回null.

mysql> select dayofyear('2023-08-05'); +-------------------------+ | dayofyear('2023-08-05') | +-------------------------+ | 217 | +-------------------------+ 1 row in set (0.00 sec)
19、EXTRACT(unit FROM date)

EXTRACT() 函数从指定的日期/时间中提取指定的部分并返回,unit的单位与adddate相同。

mysql> select extract(day from '2023-08-05'); +--------------------------------+ | extract(day from '2023-08-05') | +--------------------------------+ | 5 | +--------------------------------+ 1 row in set (0.00 sec)
20、FROM_DAYS(N)

FROM_DAYS() 函数将指定的天数转为日期并返回。FROM_DAYS() 函数与 TO_DAYS() 函数是相反的。如果参数为 NULL,FROM_DAYS() 函数将返回 NULL。

mysql> select from_days(738888); +-------------------+ | from_days(738888) | +-------------------+ | 2023-01-03 | +-------------------+ 1 row in set (0.00 sec)
21、FROM_UNIXTIME(unix_timestamp[,format])

FROM_UNIXTIME() 函数将 UNIX 时间戳数值转为日期时间,并可根据指定的格式格式化.

mysql> select from_unixtime(1691219394, '%Y-%m-%d %H:%m:%S'); +------------------------------------------------+ | from_unixtime(1691219394, '%Y-%m-%d %H:%m:%S') | +------------------------------------------------+ | 2023-08-05 15:08:54 | +------------------------------------------------+ 1 row in set (0.00 sec)
22、GET_FORMAT

语法:GET_FORMAT({DATE|TIME|DATETIME}, {‘EUR’|‘USA’|‘JIS’|‘ISO’|‘INTERNAL’})

GET_FORMAT() 函数根据需求返回格式化字符串。此函数常和 DATE_FORMAT() 和 STR_TO_DATE() 函数结合使用。

mysql> SELECT DATE_FORMAT('2023-08-05',GET_FORMAT(DATE,'INTERNAL')); +-------------------------------------------------------+ | DATE_FORMAT('2023-08-05',GET_FORMAT(DATE,'INTERNAL')) | +-------------------------------------------------------+ | 20230805 | +-------------------------------------------------------+ 1 row in set (0.01 sec)
函数调用 结果
GET_FORMAT(DATE,'USA') '%m.%d.%Y'
GET_FORMAT(DATE,'JIS') '%Y-%m-%d'
GET_FORMAT(DATE,'ISO') '%Y-%m-%d'
GET_FORMAT(DATE,'EUR') '%d.%m.%Y'
GET_FORMAT(DATE,'INTERNAL') '%Y%m%d'
GET_FORMAT(DATETIME,'USA') '%Y-%m-%d %H.%i.%s'
GET_FORMAT(DATETIME,'JIS') '%Y-%m-%d %H:%i:%s'
GET_FORMAT(DATETIME,'ISO') '%Y-%m-%d %H:%i:%s'
GET_FORMAT(DATETIME,'EUR') '%Y-%m-%d %H.%i.%s'
GET_FORMAT(DATETIME,'INTERNAL') '%Y%m%d%H%i%s'
GET_FORMAT(TIME,'USA') '%h:%i:%s %p'
GET_FORMAT(TIME,'JIS') '%H:%i:%s'
GET_FORMAT(TIME,'ISO') '%H:%i:%s'
GET_FORMAT(TIME,'EUR') '%H.%i.%s'
GET_FORMAT(TIME,'INTERNAL') '%H%i%s'
23 、HOUR(time)

HOUR() 函数提取并返回时间的小时部分.

mysql> select hour('12:21:59'); +------------------+ | hour('12:21:59') | +------------------+ | 12 | +------------------+ 1 row in set (0.00 sec)
24、LAST_DAY(date)

LAST_DAY() 函数返回指定的日期或者日期时间所在当月的最后一天.

mysql> select last_day('2023-08-05'); +------------------------+ | last_day('2023-08-05') | +------------------------+ | 2023-08-31 | +------------------------+ 1 row in set (0.00 sec)
25、LOCALTIME, LOCALTIME([fsp])

LOCALTIME和 LOCALTIME()是 NOW()的同义词.

mysql> select localtime,localtime(),now(); +---------------------+---------------------+---------------------+ | localtime | localtime() | now() | +---------------------+---------------------+---------------------+ | 2023-08-05 12:25:06 | 2023-08-05 12:25:06 | 2023-08-05 12:25:06 | +---------------------+---------------------+---------------------+ 1 row in set (0.00 sec)
26、LOCALTIMESTAMP, LOCALTIMESTAMP([fsp])

LOCALTIMESTAMP和 LOCALTIMESTAMP()是NOW() 的同义词.

mysql> select localtimestamp,localtimestamp(),now(); +---------------------+---------------------+---------------------+ | localtimestamp | localtimestamp() | now() | +---------------------+---------------------+---------------------+ | 2023-08-05 12:26:01 | 2023-08-05 12:26:01 | 2023-08-05 12:26:01 | +---------------------+---------------------+---------------------+ 1 row in set (0.00 sec)
27、MAKEDATE(year,dayofyear)

MAKEDATE() 函数根据年份和一年中天数创建一个日期并返回.

mysql> select makedate(2023,217); +--------------------+ | makedate(2023,217) | +--------------------+ | 2023-08-05 | +--------------------+ 1 row in set (0.00 sec)
28、MAKETIME(hour,minute,second)

MAKETIME() 函数指定的时、分、秒创建一个时间并返回。

mysql> select maketime(12,28,35); +--------------------+ | maketime(12,28,35) | +--------------------+ | 12:28:35 | +--------------------+ 1 row in set (0.00 sec)
29、MICROSECOND(expr)

MICROSECOND() 函数提取时间或日期时间中的微秒部分部分并作为数字返回。

mysql> select microsecond('2023-08-05 12:31:06.123456'); +-------------------------------------------+ | microsecond('2023-08-05 12:31:06.123456') | +-------------------------------------------+ | 123456 | +-------------------------------------------+ 1 row in set (0.00 sec)
30、MINUTE(time)

MINUTE() 函数提取并返回时间的分钟部分。

mysql> select minute('12:31:06'); +--------------------+ | minute('12:31:06') | +--------------------+ | 31 | +--------------------+ 1 row in set (0.00 sec)
31、MONTH(date)

MONTH() 函数提取日期的月份部分并作为数字返回。

mysql> select month('2023-08-05'); +---------------------+ | month('2023-08-05') | +---------------------+ | 8 | +---------------------+ 1 row in set (0.00 sec)
32、MONTHNAME(date)

MONTHNAME() 函数返回给定日期的月份的名字。January, February, March, April, May, June, July, August, September, October, November, December。

mysql> select monthname('2023-08-05'); +-------------------------+ | monthname('2023-08-05') | +-------------------------+ | August | +-------------------------+ 1 row in set (0.00 sec)
33、PERIOD_ADD(P,N)

PERIOD_ADD() 函数在指定年月上加上指定的月数将结果作为年月返回。语法:PERIOD_ADD(period, month_number),P的格式必须为 YYMM 或者 YYYYMM. 返回值的格式为YYYYMM.

mysql> select period_add(202308,4); +----------------------+ | period_add(202308,4) | +----------------------+ | 202312 | +----------------------+ 1 row in set (0.00 sec)
34、PERIOD_DIFF(P1,P2)

PERIOD_DIFF() 函数返回两个通过年月指定的时期之间相差的月数。P1和P2格式: YYYYMM 或 YYMM。

mysql> select period_diff(202308,202312); +----------------------------+ | period_diff(202308,202312) | +----------------------------+ | -4 | +----------------------------+ 1 row in set (0.00 sec)
35、QUARTER(date)

QUARTER() 函数返回一个指定日期所在季度值。1 - 第一季度,即 1 月到 3 月。2 - 第二季度,即 4 月到 6 月。3 - 第三季度,即 7 月到 9 月。4 - 第四季度,即 10 月到 12 月。

mysql> select quarter('2023-08-05'); +-----------------------+ | quarter('2023-08-05') | +-----------------------+ | 3 | +-----------------------+ 1 row in set (0.00 sec)
36、SECOND(time)

SECOND() 函数提取并返回时间的秒部分。

mysql> select second('12:41:32'); +--------------------+ | second('12:41:32') | +--------------------+ | 32 | +--------------------+ 1 row in set (0.00 sec)
37、SEC_TO_TIME(seconds)

SEC_TO_TIME() 函数将指定的秒数转为一个格式为 HH:MM:SS 的时间值。

mysql> select sec_to_time(46000); +--------------------+ | sec_to_time(46000) | +--------------------+ | 12:46:40 | +--------------------+ 1 row in set (0.00 sec)
38、STR_TO_DATE(str,format)

STR_TO_DATE() 函数将指定的字符串根据指定日期格式转为日期/时间。 STR_TO_DATE() 函数与 DATE_FORMAT() 函数是相反的。str和format格式要匹配,否则返回null.

mysql> select str_to_date('2023/08/05','%Y/%m/%d'); +--------------------------------------+ | str_to_date('2023/08/05','%Y/%m/%d') | +--------------------------------------+ | 2023-08-05 | +--------------------------------------+ 1 row in set (0.00 sec)
39、SUBDATE

SUBDATE() 函数在指定的日期/时间上减去指定到时间间隔加并返回新的日期/时间。SUBDATE()是 DATE_SUB()的同义词。

语法:SUBDATE(date,INTERVAL expr unit), SUBDATE(expr,days)

mysql> select subdate('2023-08-05',30),date_sub('2023-08-05',interval 30 day); +--------------------------+----------------------------------------+ | subdate('2023-08-05',30) | date_sub('2023-08-05',interval 30 day) | +--------------------------+----------------------------------------+ | 2023-07-06 | 2023-07-06 | +--------------------------+----------------------------------------+ 1 row in set (0.00 sec)
40、SUBTIME(expr1,expr2)

SUBTIME() 函数在指定的时间上减去指定的时间间隔并返回结果。

mysql> select subtime('13:01:20',30); +------------------------+ | subtime('13:01:20',30) | +------------------------+ | 13:00:50 | +------------------------+ 1 row in set (0.00 sec)
41 、SYSDATE([fsp])

以’YYYY-MM-DD hh:mm:ss’ 或者 YYYYMMDDhhmmss 格式返回当前的时间。与 NOW() 函数不同,SYSDATE() 函数返回的该函数执行的准确系统时间,而 NOW() 函数返回的是所在的语句、函数、存储过程开始执行的时间。

官网经典案例:

mysql> SELECT NOW(), SLEEP(2), NOW(); +---------------------+----------+---------------------+ | NOW() | SLEEP(2) | NOW() | +---------------------+----------+---------------------+ | 2023-08-05 13:34:30 | 0 | 2023-08-05 13:34:30 | +---------------------+----------+---------------------+ 1 row in set (2.00 sec) mysql> SELECT SYSDATE(), SLEEP(2), SYSDATE(); +---------------------+----------+---------------------+ | SYSDATE() | SLEEP(2) | SYSDATE() | +---------------------+----------+---------------------+ | 2023-08-05 13:34:35 | 0 | 2023-08-05 13:34:37 | +---------------------+----------+---------------------+ 1 row in set (2.01 sec)
42、TIME(expr)

TIME() 函数从时间或者日期时间中提取时间部分并返回.

mysql> select time('2023-08-05 13:34:37'); +-----------------------------+ | time('2023-08-05 13:34:37') | +-----------------------------+ | 13:34:37 | +-----------------------------+ 1 row in set (0.00 sec)
43、TIMEDIFF(expr1,expr2)

TIMEDIFF() 函数返回两个时间之间的差值。

mysql> select timediff('2023-08-05 13:34:37','2023-08-06 13:34:30'); +-------------------------------------------------------+ | timediff('2023-08-05 13:34:37','2023-08-06 13:34:30') | +-------------------------------------------------------+ | -23:59:53 | +-------------------------------------------------------+ 1 row in set (0.00 sec)
44、TIMESTAMP(expr), TIMESTAMP(expr1,expr2)

TIMESTAMP() 函数累加所有参数并将结果作为日期时间值返回。如果expr1和2都存在,则返回expr1+expr2的值。

mysql> select timestamp('2023-08-05'); +-------------------------+ | timestamp('2023-08-05') | +-------------------------+ | 2023-08-05 00:00:00 | +-------------------------+ 1 row in set (0.00 sec) mysql> select timestamp('2023-08-05 13:41:15',"2:10:45"); +--------------------------------------------+ | timestamp('2023-08-05 13:41:15',"2:10:45") | +--------------------------------------------+ | 2023-08-05 15:52:00 | +--------------------------------------------+ 1 row in set (0.00 sec)
45、TIMESTAMPADD(unit,interval,datetime_expr)

TIMESTAMPADD() 函数将指定的时间间隔加到一个日期时间值上并返回结果。

mysql> select timestampadd(day,1,'2023-08-05'); +----------------------------------+ | timestampadd(day,1,'2023-08-05') | +----------------------------------+ | 2023-08-06 | +----------------------------------+ 1 row in set (0.00 sec)
46、TIMESTAMPDIFF()

TIMESTAMPDIFF() 函数返回两个日期时间之间的时间间隔。unit指定单位

语法:TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)

mysql> select timestampdiff(second,'2023-08-06 08:08:08','2023-08-05'); +----------------------------------------------------------+ | timestampdiff(second,'2023-08-06 08:08:08','2023-08-05') | +----------------------------------------------------------+ | -115688 | +----------------------------------------------------------+ 1 row in set (0.00 sec)
47、TIME_FORMAT(time,format)

TIME_FORMAT() 函数按照指定的格式格式化时间。

mysql> select time_format('13:46:05','%H/%i/%S'); +------------------------------------+ | time_format('13:46:05','%H/%i/%S') | +------------------------------------+ | 13/46/05 | +------------------------------------+ 1 row in set (0.00 sec)
48、TIME_TO_SEC(time)

TIME_TO_SEC() 函数将指定的时间值转为秒数。

mysql> select time_to_sec('13:46:05'); +-------------------------+ | time_to_sec('13:46:05') | +-------------------------+ | 49565 | +-------------------------+ 1 row in set (0.00 sec)
49、TO_DAYS(date)

TO_DAYS() 函数将指定日期转为距离 0 年的天数并返回。TO_DAYS() 函数与 FROM_DAYS() 函数是相反的。

mysql> select to_days('2023-08-05'),from_days(739102); +-----------------------+-------------------+ | to_days('2023-08-05') | from_days(739102) | +-----------------------+-------------------+ | 739102 | 2023-08-05 | +-----------------------+-------------------+ 1 row in set (0.00 sec)
50、TO_SECONDS(expr)

TO_SECONDS() 函数将指定的日期/日期时间转为距离 0 年的秒数并返回结果。

mysql> select to_seconds('2023-08-05 13:54:30'); +-----------------------------------+ | to_seconds('2023-08-05 13:54:30') | +-----------------------------------+ | 63858462870 | +-----------------------------------+ 1 row in set (0.00 sec)
51、UNIX_TIMESTAMP([date])

UNIX_TIMESTAMP() 函数将指定的日期/日期时间转为 UNIX 时间戳值。 UNIX 时间戳值是距离 UTC 时间 1970-01-01 00:00:00 的秒数。

mysql> select unix_timestamp(),unix_timestamp(now()),unix_timestamp('2023-08-05 13:54:30'); +------------------+-----------------------+---------------------------------------+ | unix_timestamp() | unix_timestamp(now()) | unix_timestamp('2023-08-05 13:54:30') | +------------------+-----------------------+---------------------------------------+ | 1691215017 | 1691215017 | 1691214870 | +------------------+-----------------------+---------------------------------------+ 1 row in set (0.00 sec)
52、UTC_DATE, UTC_DATE()

UTC_DATE() 函数返回 UTC 日期。 如果 UTC_DATE() 函数用在字符串上下文时,它的返回值的格式是 ‘YYYY-MM-DD’;如果用在数字上下文中,它的返回值的格式是 YYYYMMDD。

mysql> select utc_date, utc_date(), utc_date()+5; +------------+------------+--------------+ | utc_date | utc_date() | utc_date()+5 | +------------+------------+--------------+ | 2023-08-05 | 2023-08-05 | 20230810 | +------------+------------+--------------+ 1 row in set (0.00 sec)
53、UTC_TIME, UTC_TIME([fsp])

UTC_TIME() 函数返回现在的 UTC 时间。 如果 UTC_TIME() 函数用在字符串上下文时,它的返回值的格式是 ‘hh:mm:ss’;如果用在数字上下文中,它的返回值的格式是 hhmmss。

mysql> select utc_time, utc_time(), utc_time()+5; +----------+------------+--------------+ | utc_time | utc_time() | utc_time()+5 | +----------+------------+--------------+ | 07:16:25 | 07:16:25 | 71630 | +----------+------------+--------------+ 1 row in set (0.00 sec)
54、UTC_TIMESTAMP, UTC_TIMESTAMP([fsp])

UTC_TIMESTAMP() 函数返回现在的 UTC 时间。 如果 UTC_TIMESTAMP() 函数用在字符串上下文时,它的返回值的格式是 ‘YYYY-MM-DD hh:mm:ss’;如果用在数字上下文中,它的返回值的格式是 YYYYMMDDhhmmss。

mysql> select utc_timestamp, utc_timestamp(), utc_timestamp()+5; +---------------------+---------------------+-------------------+ | utc_timestamp | utc_timestamp() | utc_timestamp()+5 | +---------------------+---------------------+-------------------+ | 2023-08-05 07:16:08 | 2023-08-05 07:16:08 | 20230805071613 | +---------------------+---------------------+-------------------+ 1 row in set (0.00 sec)
55、WEEK(date[,mode])

WEEK() 函数返回给定日期位于当年的第几周。mode:确定计算周的逻辑。如果没有指定该参数,默认将使用 default_week_format 变量的值。

语法:WEEK(date)和WEEK(date, mode)

Mode First day of week Range Week 1 is the first week …
0 Sunday 0-53 with a Sunday in this year
1 Monday 0-53 with 4 or more days this year
2 Sunday 1-53 with a Sunday in this year
3 Monday 1-53 with 4 or more days this year
4 Sunday 0-53 with 4 or more days this year
5 Monday 0-53 with a Monday in this year
6 Sunday 1-53 with 4 or more days this year
7 Monday 1-53 with a Monday in this year
mysql> select week('2023-08-05'),week('2023-12-30',6); +--------------------+----------------------+ | week('2023-08-05') | week('2023-12-30',6) | +--------------------+----------------------+ | 31 | 52 | +--------------------+----------------------+ 1 row in set (0.00 sec)
56、WEEKDAY(date)

WEEKDAY() 函数返回给定日期的工作日编号。0 - Monday,1 - Tuesday,2 - Wednesday,3 - Thursday,,4 - Friday,5 - Saturday,6 - Sunday

mysql> select weekday('2023-08-05'); +-----------------------+ | weekday('2023-08-05') | +-----------------------+ | 5 | +-----------------------+ 1 row in set (0.00 sec)
57、WEEKOFYEAR(date)

WEEKOFYEAR() 函数返回给定日期位于当年的第几周。该函数相当于 WEEK(date,3)。

mysql> select weekofyear('2023-08-05'),week('2023-08-05',3); +--------------------------+----------------------+ | weekofyear('2023-08-05') | week('2023-08-05',3) | +--------------------------+----------------------+ | 31 | 31 | +--------------------------+----------------------+ 1 row in set (0.00 sec)
58、YEAR(date)

YEAR() 函数提取日期的年份部分并作为数字返回。

mysql> select year('2023-08-05'); +--------------------+ | year('2023-08-05') | +--------------------+ | 2023 | +--------------------+ 1 row in set (0.00 sec)
59、YEARWEEK(date), YEARWEEK(date,mode)

YEARWEEK() 函数返回一个表示给定日期所在年份和第几周的数字。mode也受default_week_format参数影响。mode取值与week函数一致。

mysql> select yearweek('2023-08-05'),yearweek('2023-08-05',1); +------------------------+--------------------------+ | yearweek('2023-08-05') | yearweek('2023-08-05',1) | +------------------------+--------------------------+ | 202331 | 202331 | +------------------------+--------------------------+ 1 row in set (0.00 sec) mysql> show variables like 'default_week_format'; +---------------------+-------+ | Variable_name | Value | +---------------------+-------+ | default_week_format | 0 | +---------------------+-------+ 1 row in set (0.00 sec)


免责声明:

1、本站资源由自动抓取工具收集整理于网络。

2、本站不承担由于内容的合法性及真实性所引起的一切争议和法律责任。

3、电子书、小说等仅供网友预览使用,书籍版权归作者或出版社所有。

4、如作者、出版社认为资源涉及侵权,请联系本站,本站将在收到通知书后尽快删除您认为侵权的作品。

5、如果您喜欢本资源,请您支持作者,购买正版内容。

6、资源失效,请下方留言,欢迎分享资源链接

文章评论

0条评论