MySQL 的时间处理函数

MySQL 的时间处理相关函数汇总。

参考文档:https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html

当前时间

now () 以 'YYYY-MM-DD hh:mm:ss' 格式返回当前时间。

>> select now()
2022-01-21 12:21:04

时间戳

unix_timestamp

将时间转换为时间戳格式:

>> SELECT unix_timestamp()
>> SELECT unix_timestamp(now())
>> SELECT unix_timestamp('2022-01-21 12:21:04')
1642738864

from_unixtime

将时间戳转为时间格式:

>> SELECT from_unixtime(1642738864)
2022-01-21 12:21:04

进行 格式化

>> SELECT from_unixtime(1642738864,'%Y-%m-%d %H.%i.%s')
2022-01-21 12.21.04

时间格式化

select date_format(now(),'%Y-%m-%d')

时间计算

DATE_ADD 增加时间

set @dt = now();
select date_add(@dt, interval 1 day); -- 加1天
select date_add(@dt, interval 1 hour); -- 加1小时
select date_add(@dt, interval 1 minute); --  加1分钟
select date_add(@dt, interval 1 second); -- 加1秒
select date_add(@dt, interval 1 microsecond);-- 加1毫秒
select date_add(@dt, interval 1 week);-- 加1周
select date_add(@dt, interval 1 month);-- 加1月
select date_add(@dt, interval 1 quarter);-- 加1季
select date_add(@dt, interval 1 year);-- 加1年

DATE_SUB 减少时间

set @dt = now();
select date_sub(@dt, interval 1 day); -- 减1天
select date_sub(@dt, interval 1 hour); -- 减1小时
select date_sub(@dt, interval 1 minute); --  减1分钟
select date_sub(@dt, interval 1 second); -- 减1秒
select date_sub(@dt, interval 1 microsecond);-- 减1毫秒
select date_sub(@dt, interval 1 week);-- 减1周
select date_sub(@dt, interval 1 month);-- 减1月
select date_sub(@dt, interval 1 quarter);-- 减1季
select date_sub(@dt, interval 1 year);-- 减1年

DATEDIFF 间隔天数

格式:DATEDIFF (expr1,expr2)

返回:从一个日期到另一个日期的天数,即 *expr1*- *expr2*。

expr1 和 *expr2* 是日期或日期和时间表达式。计算中仅使用值的日期部分。

>> SELECT DATEDIFF('2021-12-31 23:59:59','2021-01-01')
364