首页 > 解决方案 > SQL 查询的时间戳计算

问题描述

我正在尝试以数据时间格式(00:00:00)显示每个客户的总旅行时间

但我很困惑我是否应该这样做

SEC_TO_TIME(SUM(结束时间 - 开始时间))

或者

SEC_TO_TIME(SUM( TIME_TO_SEC (结束时间 - 开始时间)))

或者

SEC_TO_TIME(SUM( TIME_TO_SEC (结束时间) - TIME_TO_SEC (开始时间))

如果结束时间和开始时间是日期时间格式

哪一个应该是正确的方法。我得到了第一个和第二个不同的结果

标签: mysqlsqldatabasedatetime

解决方案


第一个:

使用转换endtime并转换starttime为时间戳UNIX_TIMESTAMP

第二:

减去它们

注意:结果将以秒为单位

(UNIX_TIMESTAMP(endtime) - UNIX_TIMESTAMP(starttime))

确定客户消耗了多少时间

第三:

将结果转换为时间

SEC_TO_TIME( (UNIX_TIMESTAMP(endtime) - UNIX_TIMESTAMP(starttime)) )

所以你的最终查询应该是这样的

SELECT SEC_TO_TIME( (UNIX_TIMESTAMP(endtime) - UNIX_TIMESTAMP(starttime)) ) FROM travel


推荐阅读