有没有一种方法可以在MySQL中进行查询,以秒为单位提供两个时间戳之间的差异,还是需要在PHP中进行?如果是这样,我将如何去做?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
您可以使用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天)来源:stack overflow