为了账号安全,请及时绑定邮箱和手机立即绑定

MySQL:如何以秒为单位获取两个时间戳之间的差异

MySQL:如何以秒为单位获取两个时间戳之间的差异

慕仙森 2019-12-03 10:58:31
有没有一种方法可以在MySQL中进行查询,以秒为单位提供两个时间戳之间的区别,还是我需要在PHP中做到这一点?如果是这样,我将如何去做?
查看完整描述

3 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

您可以使用TIMEDIFF()和TIME_TO_SEC()函数,如下所示:


SELECT TIME_TO_SEC(TIMEDIFF('2010-08-20 12:01:00', '2010-08-20 12:00:00')) diff;

+------+

| diff |

+------+

|   60 |

+------+

1 row in set (0.00 sec)

您还可以使用其他答案中建议的@AmberUNIX_TIMESTAMP()函数:


SELECT UNIX_TIMESTAMP('2010-08-20 12:01:00') - 

       UNIX_TIMESTAMP('2010-08-20 12:00:00') diff;

+------+

| diff |

+------+

|   60 |

+------+

1 row in set (0.00 sec)

如果您使用的是TIMESTAMP数据类型,我猜想UNIX_TIMESTAMP()解决方案会稍微快一点,因为TIMESTAMP值已经存储为整数,代表自纪元(Source)以来的秒数。引用文档:


在列UNIX_TIMESTAMP()上使用时TIMESTAMP,该函数直接返回内部时间戳记值,而没有隐式的“字符串到Unix时间戳记”转换。


请注意,TIMEDIFF() 返回数据类型为TIME。TIME值的范围可以从“ -838:59:59”到“ 838:59:59”(大约34.96天)


查看完整回答
反对 回复 2019-12-03
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

UNIX_TIMESTAMP(ts1) - UNIX_TIMESTAMP(ts2)

如果要获得无符号的差异,请ABS()在表达式周围添加一个。


或者,您可以使用TIMEDIFF(ts1, ts2),然后通过将时间结果转换为秒TIME_TO_SEC()。


查看完整回答
反对 回复 2019-12-03
  • 3 回答
  • 0 关注
  • 828 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信