คืนค่าวันแรกของเดือน โดยรีเซ็ตวันที่เป็นวันที่ 1 และเวลาเป็น 00:00:00
=Date.StartOfMonth(dateTime as any) as any
=Date.StartOfMonth(dateTime as any) as any
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| dateTime | date/datetime/datetimezone | Yes | ค่าวันที่ใดๆ ที่อยู่ในเดือนนั้น สามารถเป็น date, datetime หรือ datetimezone ก็ได้ |
Date.StartOfMonth(#date(2025, 1, 15))=Date.StartOfMonth(#date(2025, 1, 15))
#date(2025, 1, 1)
Date.StartOfMonth(#datetime(2025, 3, 20, 14, 30, 45))=Date.StartOfMonth(#datetime(2025, 3, 20, 14, 30, 45))
#datetime(2025, 3, 1, 0, 0, 0)
let Sales = Table.FromRows({{{1, #date(2025, 1, 15)}, {2, #date(2025, 1, 28)}, {3, #date(2025, 2, 10)}}}, {"OrderID", "OrderDate"}), AddMonthStart = Table.AddCo…let
Sales = Table.FromRows({{{1, #date(2025, 1, 15)}, {2, #date(2025, 1, 28)}, {3, #date(2025, 2, 10)}}}, {"OrderID", "OrderDate"}),
AddMonthStart = Table.AddColumn(Sales, "MonthStart", each Date.StartOfMonth([OrderDate]))
in
AddMonthStart
ตารางที่มีคอลัมน์ MonthStart มีค่า 1/1/2025, 1/1/2025, 2/1/2025
let Sales = Table.FromRows({{{1, #date(2025, 1, 5), 100}, {2, #date(2025, 1, 15), 200}, {3, #date(2025, 2, 10), 150}}}, {"OrderID", "Date", "Amount"}), GroupedB…let
Sales = Table.FromRows({{{1, #date(2025, 1, 5), 100}, {2, #date(2025, 1, 15), 200}, {3, #date(2025, 2, 10), 150}}}, {"OrderID", "Date", "Amount"}),
GroupedByMonth = Table.Group(Sales, {"Date"}, {{"MonthStart", each Date.StartOfMonth([Date][0]), type date}, {"Total", each List.Sum([Amount]), type number}})
in
GroupedByMonth
ตารางที่จัดกลุ่มตามเดือน มี MonthStart และ Total
Date.StartOfMonth คืนวันแรกของเดือน (วันที่ 1) ในขณะที่ Date.StartOfYear คืนวันแรกของปี (มกราคมที่ 1) ใช้เลือกตามว่าคุณต้องการแบ่งข้อมูลเป็นเดือนหรือเป็นปี
เวลาจะถูกรีเซ็ตเป็น 00:00:00 (เที่ยงคืน) เสมอ ฟังก์ชันนี้มีจุดมุ่งหมายคือหาขอบเขตของเดือน ไม่ใช่เก็บเวลา
ใช้สำหรับ: (1) สร้างคอลัมน์เดือนใหม่เพื่อ grouping, (2) กำหนดเงื่อนไขการfilter “ตั้งแต่เดือนไหน”, (3) คำนวณจำนวนวันในเดือน, (4) สร้าง report รายเดือน
ถ้าป้อน date จะคืน date ถ้าป้อน datetime จะคืน datetime (ที่มีเวลา 00:00:00) ถ้าป้อน datetimezone จะคืน datetimezone
Date.StartOfMonth ใช้สำหรับหาวันแรกของเดือน ไม่ว่าคุณป้อนวันที่วันไหนในเดือน ฟังก์ชันจะคืนค่าวันที่ 1 ของเดือนนั้นเสมอ โดยเวลาจะถูกรีเซ็ตเป็น 00:00:00 (เที่ยงคืน)
ที่เจ๋งคือ ถ้าคุณป้อนข้อมูลแบบ datetime ที่มีเวลาอยู่ เวลาส่วนนั้นจะถูกลบทิ้งให้หมด คืนค่ากลับมาเป็นวันแรกของเดือนเท่านั้น
ส่วนตัวผม ใช้ Date.StartOfMonth เวลาต้องทำ reporting แบบ “แยกตามเดือน” เพราะมันช่วยให้กำหนดขอบเขตของแต่ละเดือนได้ชัดเจน แล้วเอาไปใช้กับ Table.Group หรือ filtering ได้ง่ายๆ ครับ