You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 8中如何将%H:%i:%s格式时长转换为总分钟+秒的%i:%s格式

MySQL 8 时长格式转换实现方案

你可以通过TIME_TO_SEC函数先将时间差转换为总秒数,再做单位换算拼接即可,最终查询语句如下:

SELECT CONCAT(
    FLOOR(TIME_TO_SEC(TIMEDIFF(date_end, date_start)) / 60),
    ':',
    LPAD(MOD(TIME_TO_SEC(TIMEDIFF(date_end, date_start)), 60), 2, '0')
) AS duration_min_sec
FROM `table`;

逻辑说明

  • TIMEDIFF(date_end, date_start):得到%H:%i:%s格式的时间差结果
  • TIME_TO_SEC():将时间格式的值转换为总秒数,比如示例中的02:10:25会被转换为7825秒
  • 总秒数除以60向下取整得到累计总分钟数:7825 / 60 = 130.416,取整后为130
  • 总秒数对60取余得到剩余秒数:7825 % 60 = 25
  • LPAD(剩余秒数, 2, '0'):给不足两位的秒数补前导零,保证秒数固定为两位格式,避免出现130:5这类不符合格式的结果

特殊场景适配

如果存在date_end早于date_start的情况,TIMEDIFF会返回负的时间值,最终结果也会携带负号。如果需要统一返回正的时长,可对总秒数加绝对值处理,修改后语句如下:

SELECT CONCAT(
    FLOOR(ABS(TIME_TO_SEC(TIMEDIFF(date_end, date_start))) / 60),
    ':',
    LPAD(MOD(ABS(TIME_TO_SEC(TIMEDIFF(date_end, date_start))), 60), 2, '0')
) AS duration_min_sec
FROM `table`;

内容的提问来源于stack exchange,提问作者evgu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 22:48:02