mysql - 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 (开始时间))
如果结束时间和开始时间是日期时间格式
哪一个应该是正确的方法。我得到了第一个和第二个不同的结果
解决方案
第一个:
使用转换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
推荐阅读
- django - 优化重复查询集
- c# - .NET Core 中的并行程序集
- java - 如何检查 Cloud Firestore 中任何文档的集合中是否存在值(例如名称)?
- reactjs - 反应:双地图循环中的自定义组件不呈现
- python - python请求只打开url,不需要在浏览器中显示或打开
- oauth-2.0 - 授权期间在 Swagger UI 中验证了错误的 OAuth
- java - 在 SpringBoot 中使用 Testcontainers 进行 Spring Data Elasticsearch 集成测试
- php - 如何在 PHPSpreadsheet 中显示数组中的项目?
- c++ - 这个 boost ptree 块可以更短(更智能)吗?
- bixby - Open automate flow with bixby key