时间是个神奇的概念,在数据分析中也是一个非常重要的维度,PowerBI里面时间日期函数和Excel里面差不多,功能也一样,所以打算用一篇写一下,如果对Excel里面的函数非常熟悉了,大概浏览一遍就行了,应该还是有那么几个可以加深一下印象,下面就开始了。
【TODAY】
TODAY()
返回当前日期,默认是返回datetime格式,但是时间部分全是0。
今天 = TODAY()
【NOW】
NOW()
以datetime格式返回当前日期和时间,精确到秒。
现在 = NOW()
【DAY】
DAY(<date>)
返回一月中的日期,1到31之间的数字。
月第N天 = DAY([日期])
【WEEKDAY】
WEEKDAY(<date>, <return_type>)
返回指示日期属于星期几的数字,1到7之间的数字。这里需要注意返回类型:
返回类型:1,周从星期日 (1) 开始,到星期六 (7) 结束;
返回类型:2,周从星期一 (1) 开始,到星期日 (7) 结束;
返回类型:3,周从星期一 (0) 开始到星期日 (6) 结束。
星期几(1) = WEEKDAY([今天],1)
星期几(2) = WEEKDAY([今天],2)
星期几(3) = WEEKDAY([今天],3)
【WEEKNUM】
WEEKNUM(<date>[, <return_type>])
根据return_type值返回给定日期的周数。
有两个系统用于此函数:
系统1:包含1月1日的周是一年的第一周,编号为第1周;
系统2:包含一年第一个星期四的周是一年的第一周,编号为第1周。
return_type周开始于系统
1 或省略星期日1
2星期一1
21星期一2
第N周1 = WEEKNUM([日期],1)
第N周2 = WEEKNUM([日期],2)
第N周21 = WEEKNUM([日期],21)
【MONTH】
MONTH(<datetime>)
以数字形式返回月份值,1到12之间的数字。
第N月 = MONTH([日期])
【QUARTER】
QUARTER(<date>)
将季度返回为从1到4的数值。
第N季度 = QUARTER([日期])
【YEAR】
YEAR(<date>)
返回日期的年份,1900到9999之间的四位整数。
第N年 = YEAR([日期])
【HOUR】
HOUR(<datetime>)
以数字形式返回小时值,0到23之间的数字。
小时数 = HOUR([现在])
【MINUTE】
MINUTE(<datetime>)
给定日期和时间值,以数字形式返回分钟值,0到59之间的数字。
分钟数 = MINUTE([现在])
【SECOND】
SECOND(<datetime>)
以数字形式返回时间值的秒数,0到59之间的数字。
秒数 = SECOND([现在])
【DATE】
DATE(<year>, <month>, <day>)
以日期/时间格式返回指定的日期。
DATE日期 = DATE([第N年],[第N月],[月第N天])
【TIME】
TIME(hour, minute, second)
将以数值形式给定的小时、分钟和秒值转换为日期/时间格式的时间。
Time小时 = TIME([小时数],[分钟数],[秒数])
【DATEDIFF】
DATEDIFF(<start_date>, <end_date>, <interval>)
返回两个日期之间跨越的间隔边界的计数。
start_date:标量日期/时间值;
end_date:标量日期/时间值返回值;
interval:比较日期时要使用的间隔。值可以是下列任一值:
- SECOND
- MINUTE
- HOUR
- DAY
- WEEK
- MONTH
- QUARTER
- YEAR
间隔年数 = DATEDIFF([日期],[现在],YEAR)
间隔季度数 = DATEDIFF([日期],[现在],QUARTER)
间隔月数 = DATEDIFF([日期],[现在],MONTH)
间隔周数 = DATEDIFF([日期],[现在],WEEK)
间隔天数 = DATEDIFF([日期],[现在],DAY)
间隔小时 = DATEDIFF([日期],[现在],HOUR)
间隔分钟 = DATEDIFF([日期],[现在],MINUTE)
【EDATE】
EDATE(<start_date>, <months>)
返回在开始日期之前或之后指定月份数的日期。
3月后 = EDATE([今天],3)
3月前 = EDATE([今天],-3)
如果遇到月份最大天数小于开始日期月份天数,就会返回实际月份的最大值。比如2月最大28天,3月最大31天,如果3月作为开始月份,那么28-31号这几天减1个月到2月份都会显示2.28号↓
特殊2月 = EDATE(DATE(2021,3,30),-1)
【EOMONTH】
EOMONTH(<start_date>, <months>)
以日期/时间格式返回指定月份数之前或之后的月份的最后一天的日期。
有的时候需要通报每月数据完成率,但需要结合实际时间进度来看,看看完成率和时间进度是否一致,就可以通过这个函数进行计算了↓
本月最后一天 = EOMONTH([今天],0)
本月剩余天数 = DATEDIFF([今天],[本月最后一天],DAY)
本月时间进度 = DIVIDE(DAY([今天]),DAY([本月最后一天]))
【YEARFRAC】
YEARFRAC(<start_date>, <end_date>, <basis>)
计算两个日期之间的天数占全年天数的比值,比如开始日期是2021.3.1号,结束日期是2021.4.3,相差33天,那么他们的结果就是33/365。有个basis参数需要注意,去不同的值除以的数量不一样,一般情况选1就行了。
0 - 美国 (NASD) 30/360
1 - 实际天数/实际天数
2 - 实际天数/360
3 - 实际天数/365
4 - 欧洲 30/360
YearF0 = YEARFRAC([日期],[今天],0)
YearF1 = YEARFRAC([日期],[今天],1)
YearF2 = YEARFRAC([日期],[今天],2)
YearF3 = YEARFRAC([日期],[今天],3)
End