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

在Power BI中将D:HH:MM:SS文本转换为十进制天数的方法咨询

Power BI 文本格式D:HH:MM:SS转十进制天数解决方案

核心结论

Power BI 没有能直接识别D:HH:MM:SS格式的内置转换函数,需要先解析出对应的天、时、分、秒数值,再换算为十进制天数,两种常用实现方式如下:

方法1:单步自定义列转换(无需拆分原列)

直接在Power Query的自定义列中输入如下公式即可,假设你的源文本列名为DurationText:

= let 
    // 按冒号拆分文本为4个片段
    SplitList = Text.Split([DurationText], ":"),
    // 依次提取各时间单位并转换为数值
    Days = Number.From(SplitList{0}),
    Hours = Number.From(SplitList{1}),
    Minutes = Number.From(SplitList{2}),
    Seconds = Number.From(SplitList{3})
in
    // 各单位换算为十进制天数求和
    Days + Hours/24 + Minutes/1440 + Seconds/86400

也可以通过内置Duration函数实现,逻辑完全一致:

= Duration.TotalDays(
    #duration(
        Number.From(Text.Split([DurationText],":"){0}),
        Number.From(Text.Split([DurationText],":"){1}),
        Number.From(Text.Split([DurationText],":"){2}),
        Number.From(Text.Split([DurationText],":"){3})
    )
)

方法2:先拆分列再计算(适合需要单独存储各时间单位的场景)

操作步骤如下:

  • 选中源文本列,依次点击「转换」选项卡 -> 「拆分列」-> 「按分隔符」,分隔符选择:,拆分为4个新列,依次重命名为天、时、分、秒
  • 选中4个新列,右键选择「更改类型」->「整数」
  • 新增自定义列,输入公式:= [天] + [时]/24 + [分]/1440 + [秒]/86400,将新列类型设置为十进制数即可

注意:如果源文本存在省略天数的情况(例如不足1天的时长仅显示为HH:MM:SS),需要先统一补全0:前缀再执行转换,避免拆分后索引取值报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:48:04