mysql时间日期类型相关操作汇总

1.datetime时间类型的加减计算

刷题过程中需要对两个datetime类型的数值求秒数差值,我就直接相减了:

select
	tag,
	start_time,
	end_time,
	duration,
	end_time - start_time
from tb_user_video_log vl inner join tb_video_info vi on vl.video_id = vi.video_id;

出来的结果:
在这里插入图片描述

明显的能看到最后一个数据4100有问题,百度了一下结合官方文档,原来是datetime类型在做加减计算时时是直接拼接成整数按拼接后的整数做加减,比如最后一条数据相当于是
  20211001110005
- 20211001105905
_______________
=                    4100

解决的办法可以使用官方提供的函数TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2),返回参数2减参数1的差值,结果以unit为单位,上面sql中end_time - start_time改写成TIMESTAMPDIFF(SECOND,start_time,end_time)
也可以通过TIME_TO_SEC(time)函数先将时间转换成秒再加减计算,也就是改成TIME_TO_SEC(end_time) - TIME_TO_SEC(start_time)也是同样的效果。

mysql内置函数用法可以在https://dev.mysql.com/doc/refman/8.0/en/built-in-function-reference.html中ctrl+f查看。

猜你喜欢

转载自blog.csdn.net/atwdy/article/details/127010700