您好,我遇到了类似的问题,花了一些时间思考,这是我的解决方案,我有用户订阅的表格,开始时间和结束时间很糟糕,我的问题有点复杂,基本上它解决了对此:
SELECT subscription_id, time_open, time_closed, TIMESTAMPDIFF(DAY,time_open,time_closed) AS Day,
HOUR(sec_to_time(TIMESTAMPDIFF(SECOND,ADDDATE(`time_open`, INTERVAL TIMESTAMPDIFF(DAY,time_open,time_closed) DAY),`time_closed`))) AS Hour,
MINUTE(sec_to_time(TIMESTAMPDIFF(SECOND,ADDDATE(`time_open`, INTERVAL TIMESTAMPDIFF(DAY,time_open,time_closed) DAY),`time_closed`))) AS Minute,
SECOND(sec_to_time(TIMESTAMPDIFF(SECOND,ADDDATE(`time_open`, INTERVAL TIMESTAMPDIFF(DAY,time_open,time_closed) DAY),`time_closed`))) AS Second
FROM `user_subscription`
所以基本上这个查询所做的是它通过在第一行推断日期来计算天数。然后它将全天数添加到开始时间并减少关闭时间我的总和,所以剩下的是当天的时间。之后,您只需从中选择小时、分钟和秒。如果您想将它们全部连接在一起,您可以将字符串连接起来,但这样您可以进一步使用它,这与字符串不同。