คืนค่าวันสุดท้ายของเดือนที่กำหนด โดยรักษาประเภท (date, datetime, หรือ datetimezone) ไว้เหมือนเดิม
=Date.EndOfMonth(dateTime as any) as any
=Date.EndOfMonth(dateTime as any) as any
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| dateTime | Date/DateTime/DateTimeZone | Yes | วันที่ที่ต้องการหาวันสิ้นเดือน สามารถเป็น date, datetime, หรือ datetimezone ก็ได้ |
Date.EndOfMonth(#date(2025, 1, 15))=Date.EndOfMonth(#date(2025, 1, 15))
#date(2025, 1, 31)
Date.EndOfMonth(#datetime(2025, 5, 20, 14, 30, 45))=Date.EndOfMonth(#datetime(2025, 5, 20, 14, 30, 45))
#datetime(2025, 5, 31, 23, 59, 59.9999999)
Date.EndOfMonth(#datetimezone(2025, 5, 17, 5, 0, 0, -7, 0))=Date.EndOfMonth(#datetimezone(2025, 5, 17, 5, 0, 0, -7, 0))
#datetimezone(2025, 5, 31, 23, 59, 59.9999999, -7, 0)
let Sales = Table.FromRows( {{#date(2025, 1, 5), 1000}, {#date(2025, 1, 28), 2000}, {#date(2025, 2, 10), 1500}}, {"Date", "Amount"} ), MonthEnd = Table.Transfor…let
Sales = Table.FromRows(
{{#date(2025, 1, 5), 1000}, {#date(2025, 1, 28), 2000}, {#date(2025, 2, 10), 1500}},
{"Date", "Amount"}
),
MonthEnd = Table.TransformColumns(Sales, {{"Date", each Date.EndOfMonth(_), type date}})
in
MonthEnd
ตารางที่มีคอลัมน์ Date ถูกแปลงเป็น: 31/01/2025 (สำหรับทั้งสองแถวในมกราคม) และ 28/02/2025 (สำหรับแถวกุมภาพันธ์)
ฟังก์ชันนี้จะจัดการอัตโนมัติ ถ้าเป็นกุมภาพันธ์ปกติจะคืนค่า 28 วัน, ปีอธิกสุรทิน 29 วัน, เมษายน ก.ย. พ.ย. คืนค่า 30 วัน, เดือนอื่นคืนค่า 31 วัน ไม่ต้องจัดการเองเลย
ยังคืนค่า 31 มกราคมเหมือนเดิม เพราะ 31 มกราคมก็คือวันสิ้นเดือนแล้ว ฟังก์ชันไม่สนว่าคุณใส่วันไหนในเดือนนั้น
ใช่ครับ ฟังก์ชันรักษาประเภทเดิม ถ้าใส่ date จะได้ date, ใส่ datetime จะได้ datetime, ใส่ datetimezone จะได้ datetimezone พร้อม timezone offset เดิม
ใช้ Date.StartOfMonth(dateTime) แทน ทำงานคล้ายกัน แต่คืนค่าวันแรกของเดือน
ฟังก์ชัน Date.EndOfMonth ใช้สำหรับคืนค่าวันสุดท้ายของเดือนจากวันที่ที่ระบุ ไม่ว่าคุณจะใส่วันใดในเดือนก็ตาม ฟังก์ชันนี้จะคืนค่าวันสิ้นเดือนนั้นอย่างแม่นยำ
ที่เจ๋งคือ Date.EndOfMonth จะรักษาประเภทข้อมูลเดิมไว้ – ถ้าใส่ date จะได้ date, ถ้าใส่ datetime จะได้ datetime พร้อมเวลา 23:59:59.9999999 เพื่อให้ครบถ้วนเต็มวี่นเดือน
ส่วนตัวผม ผมชอบใช้ Date.EndOfMonth แบบคู่กับ Table.TransformColumns เพื่อให้วันที่ในตารางมีค่าเป็นวันสิ้นเดือนทั้งหมด ถือว่าเป็น workaround ที่ดีสำหรับ financial reporting หรือ month-end reconciliation ครับ 😎