MySQL中两个timestamp类型时间戳做减法运算的结果单位是什么?
MySQL timestamp 减法运算规则说明
现有两个字段
t0和t1,数据类型均为 timestamp,其中t0 = 2021-11-18 20:25:09、t1 = 2021-11-18 20:36:41
我尝试计算t1 - t0的值,预期结果为约11分钟或约700秒,但实际得到的结果是1132。
想了解MySQL中两个timestamp类型时间戳使用-运算符做减法的运算规则是什么,以及计算结果的单位是什么。
核心运算规则
MySQL 中直接使用-运算符对两个timestamp类型字段做运算时,不会执行时间逻辑的差值计算,而是先将两个 timestamp 按照「YYYYMMDDHHMMSS」的格式转换为无符号整数,再执行普通的整数减法运算,最终返回的是整数运算结果,无标准时间单位。
你遇到的结果可以直接通过这个规则验证:
t0 = 2021-11-18 20:25:09转换为整数为20211118202509t1 = 2021-11-18 20:36:41转换为整数为20211118203641- 整数减法结果:
20211118203641 - 20211118202509 = 1132,和你实际得到的结果完全一致。
正确计算时间差的方法
如果需要获取两个时间的实际差值,使用官方提供的时间运算函数即可:
- 计算指定单位的差值,使用
TIMESTAMPDIFF(单位, 开始时间, 结束时间),支持秒、分钟、小时、天等粒度:
示例:计算秒级差值执行SELECT TIMESTAMPDIFF(SECOND, t0, t1);,你的场景会返回692,也就是11分32秒,符合你的预期。
单位可替换为MINUTE/HOUR/DAY/WEEK等获取对应粒度的差值。 - 直接获取时分秒格式的差值,使用
TIMEDIFF(结束时间, 开始时间):
示例:执行SELECT TIMEDIFF(t1, t0);,你的场景会返回00:11:32。
内容的提问来源于stack exchange,提问作者Shannon
相关产品推荐
相关产品推荐

