MySQL将timediff输出转换为日,小时,分钟,秒格式

use*_*079 15 mysql

这是我的查询:

SELECT TIMEDIFF(end_time,start_time) AS "total" FROM `metrics`;
Run Code Online (Sandbox Code Playgroud)

这给了我:

116:12:10
Run Code Online (Sandbox Code Playgroud)

意思是116小时12分10秒.

相反,我希望它说4天20小时,12分钟等

Ric*_*iwi 31

SELECT CONCAT(
FLOOR(HOUR(TIMEDIFF('2010-01-06 08:46', '2010-01-01 12:30')) / 24), ' days ',
MOD(HOUR(TIMEDIFF('2010-01-06 08:46', '2010-01-01 12:30')), 24), ' hours ',
MINUTE(TIMEDIFF('2010-01-06 08:46', '2010-01-01 12:30')), ' minutes')
Run Code Online (Sandbox Code Playgroud)

在我的示例中,使用end_time和start_time作为固定日期时间值

根据以下两条评论,此解决方案仅适用于35天内的日期差异.如果您知道开始和结束之间有超过35天,即一个月内的差异,请不要使用它.使用TIMESTAMPDIFF的其他答案将起作用.

  • @richard:你的查询将因长期差异而失败.阅读http://www.microshell.com/database/mysql/getting-around-mysql-timediff-maximum-value-of-8385959/ (4认同)

小智 14

SELECT 
CONCAT(
TIMESTAMPDIFF(day,'2001-01-01 00:00:00','2001-01-02 23:10:00') , ' dagen ',
MOD( TIMESTAMPDIFF(hour,'2001-01-01 00:00:00','2001-01-02 23:10:00'), 24), ' uren ',
MOD( TIMESTAMPDIFF(minute,'2001-01-01 00:00:00','2001-01-02 23:10:00'), 60), ' minuten '
)
Run Code Online (Sandbox Code Playgroud)