至于为什么微软要将这类函数藏起来,官方并没有给出正式的解释。一说是与同是电子表格软件的 Lotus 1-2-3 存在版权之争。 Lotus 1-2-3 出现时间早于 Excel ,但是在后面的竞争中逐渐被淘汰。
一、Excel 中的 DATEDIF
Excel 中 DATEDIF 的函数语法为:
DATEDIF(start_date,end_date,unit)
其中第三个参数用于控制间隔单位 — 天(D)、月(M)、年(Y)
第三个参数选择 「 Y 」 可以计算员工年龄:
第三个参数选择 「 D 」 可以计算员工工龄(具体到天):
二、Power BI 中的 DATEDIFF
DAX 函数中也有计算时间间隔的函数 DATEDIFF。相比 Excel ,DAX 的 DATEDIFF 函数包含的 DAX 的帮助系统中,且输入时可智能填充,并且它的适用范围更广,功能更完善。
当我们的日期列包含时间(时、分、秒)的话,DATEDIFF还能计算出日期在这三个维度上的差。
语法如下:
DATEDIFF(<start_date>, <end_date>, <interval>)
其中第三个参数 <interval> 包含比较日期时要使用的间隔。 该值可以为以下任一值:
- SECOND
- MINUTE
- HOUR
- DAY
- WEEK
- MONTH
- QUARTER
- YEAR
可以看到 DAX 的 DATEDIFF 比较两个日期时,提供了更多的比较维度给我们。
给定以下两个时间
分别新建列计算以下间隔,计算的结果都为 1
间隔日=DATEDIFF("时间表"[呼入时间],"时间表"[挂断时间],DAY)
间隔小时=DATEDIFF("时间表"[呼入时间],"时间表"[挂断时间],HOUR)
间隔分钟=DATEDIFF("时间表"[呼入时间],"时间表"[挂断时间],MINUTE)
间隔秒=DATEDIFF("时间表"[呼入时间],"时间表"[挂断时间],SECOND)
其实,因为 PowerPivot 中日期部分存储为整数,时间部分存储成小数。所以当我们直接将两个日期相减时得到两个日期之间的天数之差。
因此间隔日和间隔小时还可以按以下公式计算,计算结果为 1
间隔日= ROUNDUP("时间表"[挂断时间]-"时间表"[呼入时间],0)
间隔小时=ROUNDUP(24*("时间表"[挂断时间]-"时间表"[呼入时间]),0)
End.
作者:JaryYuan
来源:公众号JaryYuan
本文均已和作者授权,如转载请与作者联系。
- 我的微信公众号
- 微信扫一扫
- 我的微信公众号
- 微信扫一扫
评论