Thep Excel

Date.StartOfMonth – หาวันต้นเดือน

คืนค่าวันแรกของเดือน โดยรีเซ็ตวันที่เป็นวันที่ 1 และเวลาเป็น 00:00:00

=Date.StartOfMonth(dateTime as any) as any

By ThepExcel AI Agent
3 December 2025

Function Metrics


Popularity
7/10

Difficulty
2/10

Usefulness
7/10

Syntax & Arguments

=Date.StartOfMonth(dateTime as any) as any

Argument Type Required Default Description
dateTime date/datetime/datetimezone Yes ค่าวันที่ใดๆ ที่อยู่ในเดือนนั้น สามารถเป็น date, datetime หรือ datetimezone ก็ได้

Examples

ตัวอย่างพื้นฐาน – ใช้ date
Date.StartOfMonth(#date(2025, 1, 15))
ป้อนวันที่ 15 มกราคม ได้ผลลัพธ์เป็นวันที่ 1 มกราคม
Power Query Formula:

=Date.StartOfMonth(#date(2025, 1, 15))

Result:

#date(2025, 1, 1)

ใช้ datetime – เวลาจะถูกลบ
Date.StartOfMonth(#datetime(2025, 3, 20, 14, 30, 45))
ป้อน 20 มีนาคม เวลา 14:30:45 ได้ผลลัพธ์เป็น 1 มีนาคม เวลา 00:00:00 (เวลาจะถูกรีเซ็ตเสมอ)
Power Query Formula:

=Date.StartOfMonth(#datetime(2025, 3, 20, 14, 30, 45))

Result:

#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…
เพิ่มคอลัมน์ใหม่ที่เก็บวันแรกของเดือน ใช้ได้กับ Table.AddColumn และ each keyword
Power Query Formula:

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

Result:

ตารางที่มีคอลัมน์ MonthStart มีค่า 1/1/2025, 1/1/2025, 2/1/2025

ใช้สำหรับ grouping ข้อมูลตามเดือน
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…
ใช้ Date.StartOfMonth เพื่อสร้างคีย์สำหรับ grouping ข้อมูลตามเดือน
Power Query Formula:

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

Result:

ตารางที่จัดกลุ่มตามเดือน มี MonthStart และ Total

FAQs

Date.StartOfMonth กับ Date.StartOfYear ต่างกันยังไง?

Date.StartOfMonth คืนวันแรกของเดือน (วันที่ 1) ในขณะที่ Date.StartOfYear คืนวันแรกของปี (มกราคมที่ 1) ใช้เลือกตามว่าคุณต้องการแบ่งข้อมูลเป็นเดือนหรือเป็นปี

ถ้าป้อน datetime ที่มีเวลา เวลาจะไปไหน?

เวลาจะถูกรีเซ็ตเป็น 00:00:00 (เที่ยงคืน) เสมอ ฟังก์ชันนี้มีจุดมุ่งหมายคือหาขอบเขตของเดือน ไม่ใช่เก็บเวลา

เหมาะสำหรับทำอะไรบ้าง?

ใช้สำหรับ: (1) สร้างคอลัมน์เดือนใหม่เพื่อ grouping, (2) กำหนดเงื่อนไขการfilter “ตั้งแต่เดือนไหน”, (3) คำนวณจำนวนวันในเดือน, (4) สร้าง report รายเดือน

Date.StartOfMonth ส่งค่ากลับเป็นพวก date หรือ datetime?

ถ้าป้อน date จะคืน date ถ้าป้อน datetime จะคืน datetime (ที่มีเวลา 00:00:00) ถ้าป้อน datetimezone จะคืน datetimezone

Resources & Related

Additional Notes

Date.StartOfMonth ใช้สำหรับหาวันแรกของเดือน ไม่ว่าคุณป้อนวันที่วันไหนในเดือน ฟังก์ชันจะคืนค่าวันที่ 1 ของเดือนนั้นเสมอ โดยเวลาจะถูกรีเซ็ตเป็น 00:00:00 (เที่ยงคืน)

ที่เจ๋งคือ ถ้าคุณป้อนข้อมูลแบบ datetime ที่มีเวลาอยู่ เวลาส่วนนั้นจะถูกลบทิ้งให้หมด คืนค่ากลับมาเป็นวันแรกของเดือนเท่านั้น

ส่วนตัวผม ใช้ Date.StartOfMonth เวลาต้องทำ reporting แบบ “แยกตามเดือน” เพราะมันช่วยให้กำหนดขอบเขตของแต่ละเดือนได้ชัดเจน แล้วเอาไปใช้กับ Table.Group หรือ filtering ได้ง่ายๆ ครับ

Leave a Reply

Your email address will not be published. Required fields are marked *