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')

下列修饰符可以被用在 format 字符串中:

%M 月名字(January……December)
%W 星期名字(Sunday……Saturday)
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
%Y 年, 数字, 4 位
%y 年, 数字, 2 位
%a 缩写的星期名字(Sun……Sat)
%d 月份中的天数, 数字(00……31)
%e 月份中的天数, 数字(0……31)
%m 月, 数字(01……12)
%c 月, 数字(1……12)
%b 缩写的月份名字(Jan……Dec)
%j 一年中的天数(001……366)
%H 小时(00……23)
%k 小时(0……23)
%h 小时(01……12)
%I 小时(01……12)
%l 小时(1……12)
%i 分钟, 数字(00……59)
%r 时间,12 小时(hh:mm:ss [AP]M)
%T 时间,24 小时(hh:mm:ss)
%S 秒(00……59)
%s 秒(00……59)
%p AM或PM
%w 一个星期中的天数(0=Sunday ……6=Saturday )
%U 星期(0……52), 这里星期天是星期的第一天
%u 星期(0……52), 这里星期一是星期的第一天
%% 一个文字“%”

时间计算

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

TIMESTAMPDIFF 时间差值

语法: timestampdiff(unit,begin,end)

其中,begin 和 end 可以为 DATE 或 DATETIME 类型,并且可允许参数为混合类型。