如何将文本格式的HH:MM:SS时间列转换为时间格式并计算总时长
转换文本格式HH:MM:SS为时间格式并计算总时长
一、将文本时间列转换为时间格式
方法1:Power Query编辑器转换
- 选中目标文本列,在「转换」选项卡的「数据类型」中选择「时间」,系统通常能自动识别HH:MM:SS格式。
- 若自动识别失败,添加自定义列处理:
- 点击「添加列」→「自定义列」
- 输入公式(替换
[文本时间列]为你的列名):#time(Text.BeforeDelimiter([文本时间列], ":"), Text.BetweenDelimiters([文本时间列], ":", ":"), Text.AfterDelimiter([文本时间列], ":")) - 将新列的数据类型设置为「时间」。
方法2:DAX计算列转换
直接在数据模型中创建计算列,利用TIMEVALUE函数自动转换:
时间格式列 = TIMEVALUE([文本时间列])
二、创建总时长度量值
场景1:总时长不超过24小时
将所有时间转换为秒数求和后,再转回时间格式:
总时长 = VAR 总秒数 = SUMX('你的表名', HOUR([时间格式列])*3600 + MINUTE([时间格式列])*60 + SECOND([时间格式列])) RETURN IF(总秒数 = 0, BLANK(), TIME(INT(总秒数/3600), INT(MOD(总秒数,3600)/60), MOD(总秒数,60)))
场景2:总时长超过24小时(避免时间溢出)
将总时长以HH:MM:SS文本格式输出,支持跨天时长:
总时长(跨天) = VAR 总秒数 = SUMX('你的表名', HOUR([时间格式列])*3600 + MINUTE([时间格式列])*60 + SECOND([时间格式列])) VAR 小时数 = INT(总秒数/3600) VAR 分钟数 = INT(MOD(总秒数,3600)/60) VAR 秒数 = MOD(总秒数,60) RETURN IF(总秒数 = 0, BLANK(), 小时数 & ":" & FORMAT(分钟数, "00") & ":" & FORMAT(秒数, "00"))
内容的提问来源于stack exchange,提问作者user19820140
相关产品推荐
相关产品推荐

