日期Table.TransformColumns(Power Query 之 M 语言)
数据源:
任意表,其中包含日期列
目标:
提取日期列中的元素
操作过程:
选取日期列或日期时间列》【转换】》【日期&时间列】》【日期】》选取
M公式:
= Table.TransformColumns( 表, {{"列名1", 转换函数1, 数据类型1},…,{"列名n", 转换函数n, 数据类型n}}, 剩余列转换函数, 处理不存在的列)
转换函数:
年限(当前日期减去日期列中每一个日期):each Date.From(DateTime.LocalNow()) - _
仅日期:DateTime.Date
一列已是日期时,第二参数为{}
分析(仅对文本型日期有效):each Date.From(DateTimeZone.From(_))
年:Date.Year
年份开始值:Date.StartOfYear
年份结束值:Date.EndOfYear
月份:Date.Month
月份开始值:Date.StartOfMonth
月份结束值:Date.EndOfMonth
一个月的某些日(当月最大天数):Date.DaysInMonth
月份名称:each Date.MonthName(_)
一年的某一季度:Date.QuarterOfYear
季度开始值:Date.StartOfQuarter
季度结束值:Date.EndOfQuarter
一年的某一周:Date.WeekOfYear
一个月的某一周:Date.WeekOfMonth
星期开始值(默认以周一为开始):Date.StartOfWeek
星期结束值:Date.EndOfWeek
天:Date.Day
每周的某一天(周一从0起计):Date.DayOfWeek
一年的某一日:Date.DayOfYear
一天开始值(当天零点):Date.StartOfDay
一天结束值:Date.EndOfDay
星期几:each Date.DayOfWeekName(_)
例外:
合并日期和时间:先后选取日期列和时间列
= Table.CombineColumns( 表, {"日期列", "时间列"}, (columns) => List.First(columns) & List.Last(columns), "合并的日期时间列")
Table.CombineColumns合并…Combine…
最早:List.Min(列表)
最新:List.Max(列表)
说明:
所有的结束值,仅日期的为最后一天,带时间的为最后一天的23:59:59.9999999,显示成下一天。
扩展:
日期转成包含年、月、日的记录:each Date.ToRecord(_)
日期时间转成包含年、月、日、时、分、秒的记录:each DateTime.ToRecord(_)
日期时间时区转成包含年、月、日、时、分、秒、时区时、时区分的记录:each DateTimeZone.ToRecord(_)