Power Query M获取上周、上上周、本月、去年同期

在Power Query(也称为M语言)中,你可以使用内置的日期和时间函数来获取特定的日期。以下是如何获取今天的日期、昨天的日期、上周起始到结束的日期(不含今天),以及上上周起始和结束的日期(不含今天和上周)的示例代码。

  1. 获取今天的日期
    m
    Today = DateTime.LocalNow() // 这将返回一个日期时间值,如果只想要日期部分,可以使用 DateTime.Date(DateTime.LocalNow())
    但通常,对于仅需要日期的场景,我们会这样做:

m
TodayDate = DateTime.Date(DateTime.LocalNow())
2. 获取昨天的日期
m
YesterdayDate = Date.AddDays(TodayDate, -1)
3. 获取上周起始到结束的日期(不含今天)
首先,我们需要找到上周的第一天(通常是周日,但取决于你的定义)。然后,我们将找到上周的最后一天(周六)。

m
// 假设上周的第一天是周日
StartOfLastWeek = Date.StartOfWeek(Date.AddDays(TodayDate, -7), Day.Sunday)
EndOfLastWeek = Date.AddDays(StartOfLastWeek, 6) // 上周六
注意:Date.StartOfWeek 函数的第二个参数允许你指定一周的第一天是星期几。在这个例子中,我使用了 Day.Sunday 作为参数,但你可以根据需要更改为 Day.Monday 或其他。

  1. 获取上上周起始和结束的日期(不含今天和上周)
    这类似于获取上周的日期,但我们需要再往前推一周。

m
// 上上周的第一天(假设是周日)
StartOfPreviousWeek = Date.StartOfWeek(Date.AddDays(TodayDate, -14), Day.Sunday)
EndOfPreviousWeek = Date.AddDays(StartOfPreviousWeek, 6) // 上上周六
完整示例
将这些片段组合成一个查询可能看起来像这样(注意,这只是一个示例,并不是一个可以直接在Power Query编辑器中运行的完整查询):

m
let
TodayDate = DateTime.Date(DateTime.LocalNow()),
YesterdayDate = Date.AddDays(TodayDate, -1),
StartOfLastWeek = Date.StartOfWeek(Date.AddDays(TodayDate, -7), Day.Sunday),
EndOfLastWeek = Date.AddDays(StartOfLastWeek, 6),
StartOfPreviousWeek = Date.StartOfWeek(Date.AddDays(TodayDate, -14), Day.Sunday),
EndOfPreviousWeek = Date.AddDays(StartOfPreviousWeek, 6)
in
// 这里你可以返回一个表格或仅仅是你需要的日期值
// 例如,返回一个包含这些日期的表格
#table(
{"DateType", "DateValue"},
{
{"Today", TodayDate},
{"Yesterday", YesterdayDate},
{"StartOfLastWeek", StartOfLastWeek},
{"EndOfLastWeek", EndOfLastWeek},
{"StartOfPreviousWeek", StartOfPreviousWeek},
{"EndOfPreviousWeek", EndOfPreviousWeek}
}
)
请注意,上面的#table函数示例仅用于说明目的,并非Power Query的标准部分。在Power Query编辑器中,你通常会通过“添加自定义列”或“添加到新查询”并编写适当的M代码来构建和返回表格。上面的#table示例旨在展示如何将这些日期组织成一个逻辑上的表格结构。在实际的Power Query查询中,你可能会将这些值用作参数或将其直接插入到现有的数据转换流程中。

posted @ 2024-07-29 17:46  Laravel自学开发  阅读(98)  评论(0编辑  收藏  举报