最简单的方法是
CONCAT(
FLOOR(TIMESTAMPDIFF(SECOND, startDate, endDate) / 86400), ' days ',
FLOOR((TIMESTAMPDIFF(SECOND, startDate, endDate) % 86400)/3600), ' hours ',
FLOOR((TIMESTAMPDIFF(SECOND, startDate, endDate) % 3600)/60), ' minutes ',
(TIMESTAMPDIFF(SECOND, startDate, endDate) % 60), ' seconds'
)
要仅显示相关信息,您需要做一个更复杂的版本
IF(
FLOOR(TIMESTAMPDIFF(SECOND, startDate, endDate) / 86400) = 0,
IF(
FLOOR((TIMESTAMPDIFF(SECOND, startDate, endDate) % 86400)/3600) = 0,
IF(
FLOOR((TIMESTAMPDIFF(SECOND, startDate, endDate) % 3600)/60) = 0,
CONCAT((TIMESTAMPDIFF(SECOND, startDate, endDate) % 60), ' seconds'),
CONCAT(
FLOOR((TIMESTAMPDIFF(SECOND, startDate, endDate) % 3600)/60), ' minutes ',
(TIMESTAMPDIFF(SECOND, startDate, endDate) % 60), ' seconds'
)
),
CONCAT(
FLOOR((TIMESTAMPDIFF(SECOND, startDate, endDate) % 86400)/3600), ' hours ',
FLOOR((TIMESTAMPDIFF(SECOND, startDate, endDate) % 3600)/60), ' minutes ',
(TIMESTAMPDIFF(SECOND, startDate, endDate) % 60), ' seconds'
)
),
CONCAT(
FLOOR(TIMESTAMPDIFF(SECOND, startDate, endDate) / 86400), ' days ',
FLOOR((TIMESTAMPDIFF(SECOND, startDate, endDate) % 86400)/3600), ' hours ',
FLOOR((TIMESTAMPDIFF(SECOND, startDate, endDate) % 3600)/60), ' minutes ',
(TIMESTAMPDIFF(SECOND, startDate, endDate) % 60), ' seconds'
)
)