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

Pentaho中HH:mm:ss格式STRING类型时长如何转INT后求和得分钟数

时长字符串(HH:mm:ss)求和转分钟方案

核心逻辑

  • 把HH:mm:ss格式的字符串按冒号拆分,提取小时、分钟、秒三个部分的数值
  • 按 小时×60 + 分钟 + 秒÷60 的规则,将单条时长转换为分钟单位的数值
  • 对所有行的分钟数值求和得到最终结果

不同场景实现代码

场景1:SQL环境

假设时长字段名为duration_str,表名为your_table:

兼容超过24小时时长的通用写法(字符串拆分)

SELECT SUM(
  CAST(SUBSTRING_INDEX(duration_str, ':', 1) AS UNSIGNED) * 60
  + CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(duration_str, ':', 2), ':', -1) AS UNSIGNED)
  + CAST(SUBSTRING_INDEX(duration_str, ':', -1) AS UNSIGNED) / 60
) AS total_minutes
FROM your_table;

MySQL 时间函数写法(仅适用于时长小于24小时的场景)

SELECT SUM(
  HOUR(STR_TO_DATE(duration_str, '%H:%i:%s')) * 60 
  + MINUTE(STR_TO_DATE(duration_str, '%H:%i:%s')) 
  + SECOND(STR_TO_DATE(duration_str, '%H:%i:%s')) / 60
) AS total_minutes
FROM your_table;

场景2:Python Pandas环境

假设DataFrame名为df,时长列名为duration_str:

import pandas as pd

# 方法1:内置时间类型转换(支持超过24小时的时长)
df['duration_min'] = pd.to_timedelta(df['duration_str']).dt.total_seconds() / 60
total_minutes = df['duration_min'].sum()

# 方法2:字符串拆分计算
df[['h', 'm', 's']] = df['duration_str'].str.split(':', expand=True).astype(int)
df['duration_min'] = df['h'] * 60 + df['m'] + df['s'] / 60
total_minutes = df['duration_min'].sum()

场景3:Excel环境

假设时长数据存放在A列,从A2行开始:

  1. 在B2单元格输入公式:=HOUR(TIMEVALUE(A2))*60 + MINUTE(TIMEVALUE(A2)) + SECOND(TIMEVALUE(A2))/60
  2. 下拉B2单元格公式,应用到所有时长对应的行
  3. 对B列所有数值求和即可得到总分钟数

注意事项

  • 若存在超过24小时的时长(如36:05:20),避免使用时间类转换函数,优先用字符串拆分的方法处理,避免转换报错
  • 若需要整数结果,对最终求和结果使用ROUND、INT类取整函数处理即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:45:04