Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >被问了无数次!6个日期时间常见问题总结 | Power Query实战

被问了无数次!6个日期时间常见问题总结 | Power Query实战

作者头像
大海Power
发布于 2022-04-11 11:04:54
发布于 2022-04-11 11:04:54
9.5K00
代码可运行
举报
运行总次数:0
代码可运行

一、如何获取系统当前/当天时间?

获取当前时间,可以使用函数:DateTime.LocalNow()或DateTime.FixedLocalNow()

获取当天日期,需要在当前时间上用Date.From函数来实现:

二、如何计算两个日期的间隔时长、天数?

Power Query里怎么计算两个日期的间隔天数,如果两个日期是标准格式的话,可以直接相减。

在PQ里,日期相减得到的是一个区间(时间段),即这两个日期之间隔了多长(多少天多少小时多少分钟多少秒)。如果希望得到天数的结果,可以直接转换数据格式,比如:

如果希望直接计算天数,你可以直接用函数Duration.TotalDays进行转换,如下图所示:

三、如何把时间自动加上6小时

Power Query里,可以直接用:[时间]+#duration(0,6,0,0)

#duration里的四个参数分别表示:(天,时,分,秒)

四、如何把时间往前/后推1个月?其他时长?

在Power Query里,时间往前/后推1个月,可以使用函数:Date.AddMonths,用法跟Excel里的EDATE完全一样,如下图所示:

而往前(或往后)推多少年,除了转换为多少个月,在Power Query里还直接提供了Date.AddYears函数,如下图所示:

而且,有月、年的,还有AddDays、AddQuarters、AddWeeks,整一个日期全家桶:

上面的函数用法很简单,但是,有一个小小的问题大家可能要注意一下。

我在举例的时候特意用了3月底的一些日期,对应的往前推一个月就是2月底,所以,大家可以观察一下,当月底的日期往前推的时候,是什么情况:

还有,如果往后推一个月呢?月底对应的又是什么?

一定要自己多动手试试哦。

五、’如何计算年龄?

由于PQ里没有类似Excel中的Datedif函数,因此,在PQ中计算常用的间隔天数、年数(年龄),跟在Excel里有所不同——稍微繁琐一点儿,要按照最原始的通过日期计算的方法来求解,但理解了其实也不难。

首先,通过函数Date.ToText可以直接提取月日的格式,比如:

然后,只要判断月日组合的文本大小即可对比日期的月日大小——将日期转换为4位的文本时,文本的排序和再转换为数字的排序是一样的,比如“0513”比“0512”大,跟513比512大是一样的。

此时,通过月日组合比较的结果是true或false,可以直接用Number.From函数转为1或0,所以,最后公式只要用年份差减去转换为数字的判断结果即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
= Date.Year([当前日期])   - Date.Year([生日])
 -Number.From(Date.ToText([生日],"MMdd")>Date.ToText([当前日期],"MMdd"))

如下图所示:

六、如何计算工作日?

经常有朋友问怎么计算两个日期间的工作日问题,本来,对于简单的计数问题,总不会复杂到什么程度,但是,对于这个问题,我通常会说,先确定你的工作日历表,也就是说,先定义好哪些算工作日,哪些算假期——因为每个公司都不一样,甚至每个人都不一样。

当然,无论怎样,我们还是先来看一下完全不需要处理特殊日期的情况。即反正周一到周五就是工作日,周六周日就是休息日,这种情况下,如果用Excel直接解,一个函数搞定:

然鹅,PQ里没有这样的函数,那该怎么办?——一句话,回归自然:选出周一到周五的日期,然后计数!直接上公式:

其中,d = {Number.From([开始日期])..Number.From([结束日期])},即根据起止日期转换为数值后生成相应的区间序列。

下面的List.Select就是上面的d进行筛选,条件为日期的星期几(Date.DayOfWeek,第2个参数为0时,从0开始计算周一),筛选出来后用List.Count进行计数。

在很多问题上,没有现成的函数时,就要考虑用最基础的算法去实现它。

实际工作中,我是从来没见过不需要处理特殊日期的!那么,如果有专门的假期表,该怎么算工作日?

这种情况下,一般来说,应该有一个参与计算的完整的日历表,其中标明了哪些是工作日,哪些是假期——对于很多比较完整的企业数据模型来说,这种完整的日历表应该是比较好的解决方案(如果没有,建议建一个)。样子大概如下:

这种情况下,计算主要就是对日历表进行筛选然后计数:

总结

在实际工作中关于日期及其相关计算的问题,通常都有很多特殊的情况需要处理,比如这个例子中的特殊假期,还有其他的如年假天数计算等等,每个企业都有自己特定的计算方法,大多数情况下都需要回到比较基础的算法来实现,但是,无论怎么变,仍然是这些基础的函数的熟练运用而已。

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Power Query里计算两个日期的间隔天数、年龄
由于PQ里没有类似Excel中的Datedif函数,因此,在PQ中计算常用的间隔天数、年数(年龄),跟在Excel里有所不同。
大海Power
2021/08/31
8.1K0
如何计算两个日期的间隔月份?这个年月处理方法,一定要get到! | Power Query实战
前天我发了文章《被问了无数次!6个日期时间常见问题总结 | Power Query实战》,里面有一个关于计算两个日期的间隔天数以及计算年龄(两个日期的间隔年数)的问题,但却没有关于两个日期的间隔月份数的情况。
大海Power
2022/05/25
3.4K0
如何计算两个日期的间隔月份?这个年月处理方法,一定要get到! | Power Query实战
计算工作日,反正我从来没见过不需要处理特殊日期的!
经常有朋友问怎么计算两个日期间的工作日问题,本来,对于简单的计数问题,总不会复杂到什么程度,但是,对于这个问题,我通常会说,先确定你的工作日历表,也就是说,先定义好哪些算工作日,哪些算假期——因为每个公司都不一样,甚至每个人都不一样。
大海Power
2021/08/31
9270
​时间序列&日期学习笔记大全(上)
对于时间序列数据,传统的做法是在一个序列或DataFrame的索引中表示时间成分,这样就可以对时间元素执行操作。pandas也可以将时间作为数据
朱小五
2020/09/16
1.7K0
​时间序列&日期学习笔记大全(上)
Power BI创建日期表的几种方式概览
几乎所有的报表模型都涉及到日期和时间,因此要创建Power BI报表,日期表就必须得有。虽然最新的Power BI版本已经可以自动为每一个时间列创建日期表。
陈学谦
2020/04/14
6.9K0
Power BI创建日期表的几种方式概览
PQ-M及函数:怎么根据出生日期计算年龄?
小勤:Power Query里有没有类似Excel里的Datedif函数可以用来计算年龄的啊? 大海:没有。唉…… 小勤:那怎么办呢? 大海:按照最原始的通过日期的方法来算咯,其实也不难。 小勤:那不
大海Power
2021/08/30
1.7K0
Power Query里怎么计算两个日期的间隔天数?
大海:那你可以直接用函数Duration.TotalDays进行转换,如下图所示:
大海Power
2021/08/30
4.6K0
Excel里日期往前推一个月,怎么破? | PQ实用函数
当然,这个问题在Excel里是一个基本函数EDATE就轻松搞定,往前推一个月,针对如期加上参数-1即可(如果往后推,当然就是正数),如下图所示:
大海Power
2021/08/31
4.7K0
如何在Power Query中提取数据?——时间篇(1)
日期作为业务维度里面一个很重要的因素,大部分的业务分析都离不开时间这个条件,所以对于时间的提取的准确性就显得尤为重要。
逍遥之
2020/03/23
5.3K1
Power Query日期格式转换
有人问,三列年月日,如何在Power Query变为“20210101”这种样式?
wujunmin
2021/11/26
4.2K0
这几个函数收好,数据格式转换全就靠它们了 | PQ必备技能
群里有小伙伴在问一个数据格式转换的问题:将数值转换为1位小数的形式。听这么问,当然很容易以为这是个简单的取小数位问题,那直接Number.Round就搞定了:
大海Power
2021/08/31
9150
Power Query生成连续日期
连续日期可能用来制日期表,也可能用来判断某一日期段发生了什么(比如天气如何),以下介绍两种Power Query生成连续日期的方式(示例为Excel界面,Power BI 操作相同)。
wujunmin
2025/02/10
1870
Power Query生成连续日期
Excel公式技巧35: 计算工作日天数
=MAX(0,NETWORKDAYS(MAX($A2,C$1),MIN($B2,EOMONTH(C$1,0))))
fanjy
2020/06/03
1.9K0
Power Query里时间处理很容易出错?根本原因是……
Power Query里,日期、时间、时长、数字都是不同的类型,需要严格区分和转换,两个日期/时间相减是时长(duration),时长要经过转换才能得到相应的天时分秒等“数字”——这是跟excel里不一样的地方,也是很多朋友感觉PQ里日期时间处理困难或易错的关键。
大海Power
2023/09/09
2.3K0
Power Query里时间处理很容易出错?根本原因是……
【重学 MySQL】三十二、日期时间函数
GET_FORMAT函数中date_type和format_type参数取值如下:
用户11332765
2024/10/28
2090
【重学 MySQL】三十二、日期时间函数
Power Query按开关店日期拆分店铺行数
在连锁零售业有一项常规工作-制定未来业绩目标。比如下表模拟2023年目标设置,每个店铺拆分为12个月,分别设置业绩目标值。
wujunmin
2022/04/06
8130
Power Query按开关店日期拆分店铺行数
1.20 PowerBI数据准备-日期表增加节假日、工作日分析相关列
加入 PowerBI自己学 知识星球 可以:下载源文件,边学边练;遇到问题,提问交流,有问必答。
PowerBI自己学_轻松
2025/02/23
2380
1.20 PowerBI数据准备-日期表增加节假日、工作日分析相关列
PQ-日期区间生成序列?试试这两种方法。
大海:其实方法很多,比较常见的一种是可以先将日期转为数字,生成列表后,再转回日期,公式如下:
大海Power
2021/08/30
8740
Java获取时间/格式化日期代码总结
我们在Java开发过程中,少不了与时间打交道,比如根据两个日期得出相差的时分秒,时间加减,时间累加,前5分钟,前一个月,前一年,等等...所以我从网上搜集一些常用的时间/日期格式化代码,以飨读者。
浩Coding
2019/07/03
4.3K0
date和calendar_Calendar类
在程序中,某个固定的时间代表的都是一个时间点,也就是一个时间的瞬间,例如2009年3月8日15点50分0秒,在实际的应用中,经常需要对于两个时间进行比较或计算时间之间的差值,这些功能在Java语言中都可以很方便的实现。
全栈程序员站长
2022/11/09
2.1K0
推荐阅读
相关推荐
Power Query里计算两个日期的间隔天数、年龄
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档