前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Power Query里计算两个日期的间隔天数、年龄

Power Query里计算两个日期的间隔天数、年龄

作者头像
大海Power
发布2021-08-31 11:02:22
7.2K0
发布2021-08-31 11:02:22
举报
文章被收录于专栏:用户8950297的专栏

由于PQ里没有类似Excel中的Datedif函数,因此,在PQ中计算常用的间隔天数、年数(年龄),跟在Excel里有所不同。

- 计算间隔天数 -

小勤:Power Query里怎么计算两个日期的间隔天数?

大海:如果两个日期是标准格式的话,可以直接相减的。

小勤:但为什么这是有小数点的一堆乱七八糟的东西?

大海:在PQ里,日期相减得到的是一个区间(时间段),就是这两个日期之间隔了多长(多少天多少小时多少分钟多少秒)。

小勤:那怎么直接得到天数的结果?

大海:得到结果后你可以直接转换数据格式,比如:

小勤:那如果是直接计算天数呢?

大海:那你可以直接用函数Duration.TotalDays进行转换,如下图所示:

- 计算年龄 -

小勤:Power Query里怎么计算年龄呢?

大海:这个稍微繁琐一点儿,要按照最原始的通过日期计算的方法来求解,但理解了其实也不难。

小勤:那不是要先判断出生日期的月日是否比当前日期的月日大?感觉很麻烦。

大海:其实还好,因为通过函数Date.ToText可以直接提取月日的格式,比如:

小勤:啊,可以这样的话感觉好像有简单了一丢丢,不要考虑月和日分开判断的问题了。

大海:对的,所以,你只要判断月日组合的文本大小就可以了。

小勤:判断文本大小?不是要转成数字来比大小吗?

大海:不需要啦,当你将日期转换为4位的文本时,文本的排序和再转换为数字的排序是一样的,比如“0513”比“0512”大,跟513比512大是一样的。

小勤:啊,那就是可以转换好就直接比较了,那公式还是很长啊,如果“生日的月日大于等于当前日期月日”,那么“年份差减1”,否则“年份差”……

大海:也不需要,月日比较的结果就是true或false,这是可以直接用Number.From函数转为1或0的,所以,最后公式只要用年份差减去转换为数字的判断结果就好了:

代码语言:javascript
复制
= Date.Year([当前日期]) 
  - Date.Year([生日]) 
  -Number.From( 
       Date.ToText([生日],"MMdd")
        >Date.ToText([当前日期],"MMdd")
    )

如下图所示:

小勤:嗯。这个方法好。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel到PowerBI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档