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

如何使用DAX计算起止时间的总时长(小时数)?

解决DAX计算时长(小时数)的问题

你原公式的核心问题

  1. 误用聚合函数SUM:SUM('Data'[Finish Date])和SUM('Data'[Start Date])是对整个列的日期值求和,得到的是固定的全局聚合结果,所以整列返回值完全相同。
  2. 日期运算逻辑错误:DAX中日期时间以数值存储(1代表1天),你直接对聚合后的日期值做减法、乘24再减12,得到的数值会被自动识别为日期(比如数值2对应1900/1/2),所以显示成日期格式。

正确的解决方案

1. 计算每行的单条记录时长(小时)

如果要给每行单独计算开始到结束的小时数,创建计算列,直接针对行上下文的日期计算:

  • 取整的整数小时:
总时长(小时) = DATEDIFF('Data'[Start Date], 'Data'[Finish Date], HOUR)
  • 带小数的精确小时(比如30分钟=0.5小时):
总时长(小时) = (VALUE('Data'[Finish Date]) - VALUE('Data'[Start Date])) * 24

2. 计算整个表的总时长汇总(所有记录时长之和)

如果要统计所有行的总时长,创建度量值(适合报表中使用):

  • 基于DATEDIFF的汇总:
总时长汇总(小时) = SUMX('Data', DATEDIFF('Data'[Start Date], 'Data'[Finish Date], HOUR))
  • 基于数值运算的精确汇总:
总时长汇总(小时) = SUMX('Data', (VALUE('Data'[Finish Date]) - VALUE('Data'[Start Date])) * 24)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 16:40:41