日期函数(Power Query 之 M 语言)
表示
日期表示法:
= #date(年,月,日)
参数不能超出限制
增减
日期的增减:
= Date.AddDays(日期, 增减的天数)
月份的增减:
= Date.AddMonths(日期, 增减的月数)
季度的增减:
= Date.AddQuarters(日期, 增减的季数)
周的增减:
= Date.AddWeeks(日期, 增减的周数)
年的增减:
= Date.AddYears(日期, 增减的年数)
提取日期中的元素
日期中的日:
= Date.Day(日期)
日期所在的星期(数字):
= Date.DayOfWeek(日期, 周起始)
周起始
0:周日0、周一为1、周二为2……
1或缺省:周一为0
2:周二为0
3:周三为0
4:周四为0
5:周五为0
6:周六为0
日期所在的星期(文本):
= Date.DayOfWeekName(日期, "国家")
国家
zh-cn或中文版缺省:星期一、星期二……
en-us:Monday、Tuesday……
日期所在的月:
= Date.Month(日期)
日期所在的月份名称(文本):
= Date.MonthName(日期, "国家")
默认中文数字月(简体中文版Excel)
日期所在月的最大天数:
= Date.DaysInMonth(日期)
日期所在月的第几周
= Date.WeekOfMonth(日期, 周起始)
周起始:
0:周日为起始
1或缺省:周一为起始
……
日期所在的季度
= Date.QuarterOfYear(日期)
日期所在年
= Date.Year(日期)
日期所在年的第几天
= Date.DayOfYear(日期)
日期所在年的第几周
= Date.WeekOfYear(日期, 周起始)
起始与结束
当天的起始:
= Date.StartOfDay(日期)
当天的最后一刻:
= Date.EndOfDay(日期)
当周的起始:
= Date.StartOfWeek(日期,周起始)
周起始:
0:周日为起始
1或缺省:周一为起始
……
当周的最后一天(一刻):
= Date.EndOfWeek(日期,周起始)
当月的起始:
= Date.StartOfMonth(日期)
当月的最后一天(一刻):
= Date.EndOfMonth(日期)
当季的起始:
= Date.StartOfQuarter(日期)
当季的最后一天(一刻):
= Date.EndOfQuarter(日期)
当年的起始:
= Date.StartOfYear(日期)
当年的最后一天(一刻):
= Date.EndOfYear(日期)
转换
转换成完整年月日:
= Date.From(日期/日期时间/日期时间时区/数值/文本型日期, "国家")
默认为短日期类型
示例:
= Date.From(42401) 2016-2-1
= Date.From(#datetime(2016,2,1,15,16,17)) 2016-2-1
= Date.From("2016-2-1") 2016-2-1
文本型日期转换为真日期:
= Date.FromText(文本型日期, [格式, 国家])
示例:
= Date.FromText("2021-12-31") 2021-12-31
= Date.FromText("2021.12.31") 2021-12-31
= Date.FromText("12.31.2021") 2021-12-31
= Date.FromText("20211231") 2021-12-31
= Date.FromText("2021年12月31日") 2021-12-31
= Date.FromText("2021年12月") 2021-12-1
= Date.FromText("2021-12") 2021-12-1
= Date.FromText("2021") 2021-1-1
= Date.FromText("2021年") 2021-1-1
= Date.FromText("12-31") 2022(当年)-12-31
= Date.FromText("12月31日") 2022(当年)-12-31
(日期间隔符号与windows中设置同)
真日期转成文本型日期:
= Date.ToText(日期, [格式, 国家] )
示例:
= Date.ToText(#date(2022, 3, 15), [Format="yyyy-MM", Culture="zh-cn"]) "2022-03"
日期转换成包括年、月、日的记录
= Date.ToRecord(日期)
判断
是否是日期:
日期 is date
指定日期是否在:
当前的:
天:= Date.IsInCurrentDay(日期)
周:= Date.IsInCurrentWeek(日期)
月:= Date.IsInCurrentMonth(日期)
季:= Date.IsInCurrentQuarter(日期)
年:= Date.IsInCurrentYear(日期)
是否闰年:= Date.IsLeapYear(日期)
之后的:
天:= Date.IsInNextDay(日期)
周:= Date.IsInNextWeek(日期)
月:= Date.IsInNextMonth(日期)
季:= Date.IsInNextQuarter(日期)
年:= Date.IsInNextYear(日期)
之后的若干:
天:= Date.IsInNextNDays(日期, 天数 )
周:= Date.IsInNextNWeeks(日期, 周数 )
月:= Date.IsInNextNMonths(日期, 月数 )
季:= Date.IsInNextNQuarters(日期, 季数)
年:= Date.IsInNextNYears(日期, 年数)
之前的:
天:= Date.IsInPreviousDay(日期)
周:= Date.IsInPreviousWeek(日期)
月:= Date.IsInPreviousMonth(日期)
季:= Date.IsInPreviousQuarter(日期)
年:= Date.IsInPreviousYear(日期)
今年内今天和今天之前:= Date.IsInYearToDate(日期)
之前的若干:
天:= Date.IsInPreviousNDays(日期, 天数)
周:= Date.IsInPreviousNWeeks(日期, 周数)
月:= Date.IsInPreviousNMonths(日期, 月数)
季:= Date.IsInPreviousNQuarters(日期, 季数)
年:= Date.IsInPreviousNYears(日期, 年数)
示例:
假设系统当前日期是2022-3-16
= Date.IsInCurrentDay( #date( 2022, 3, 16))返回true,其他日期返回false
= Date.IsInNextDay( #date( 2022, 3, 17))返回true,其他日期返回false
= Date.IsInPreviousDay( #date( 2022, 3, 15))返回true,其他日期返回false
= Date.IsInNextNDays( #date( 2022, 3, 17), 2) 和 = Date.IsInNextNDays( #date( 2022, 3, 18), 2)返回true,其他日期返回false
= Date.IsInPreviousNDays( #date( 2022, 3, 15), 2) 和 = Date.IsInPreviousNDays( #date( 2022, 3, 14), 2)返回true,其他日期返回false
日期参数
星期日:Day.Sunday
星期一:Day.Monday
星期二:Day.Tuesday
星期三:Day.Wednesday
星期四:Day.Thursday
星期五:Day.Friday
星期六:Day.Saturday