Date.AddWeeks เพิ่มจำนวนสัปดาห์ (สัปดาห์ = 7 วัน) ให้กับค่า date, datetime หรือ datetimezone ที่กำหนด เหมาะสำหรับการคำนวณตามรอบเวลาประจำสัปดาห์
=Date.AddWeeks(dateTime as any, numberOfWeeks as number) as any
=Date.AddWeeks(dateTime as any, numberOfWeeks as number) as any
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| dateTime | any (date, datetime, datetimezone) | Yes | ค่า date, datetime หรือ datetimezone ที่ต้องการเพิ่มจำนวนสัปดาห์ | |
| numberOfWeeks | number | Yes | จำนวนสัปดาห์ที่ต้องการเพิ่ม สามารถใช้จำนวนลบเพื่อลบสัปดาห์ (เช่น -2 = ลบ 2 สัปดาห์) |
กำหนดวันที่สิ้นสุดของสัปดาห์ที่ 1, 2, 3 เป็นต้นสำหรับกิจกรรมตามสัปดาห์
กำหนดจุดตรวจสอบความคืบหน้าของโครงการตามสัปดาห์
Date.AddWeeks(#date(2011, 5, 14), 2)=Date.AddWeeks(#date(2011, 5, 14), 2)
#date(2011, 5, 28)
Date.AddWeeks(#date(2011, 5, 14), 4)=Date.AddWeeks(#date(2011, 5, 14), 4)
#date(2011, 6, 11)
Date.AddWeeks(#date(2011, 5, 14), -1)=Date.AddWeeks(#date(2011, 5, 14), -1)
#date(2011, 5, 7)
Date.AddWeeks(#datetime(2011, 5, 14, 10, 30, 0), 3)=Date.AddWeeks(#datetime(2011, 5, 14, 10, 30, 0), 3)
#datetime(2011, 6, 4, 10, 30, 0)
Date.AddWeeks นับเพิ่มแบบปกติ 1 สัปดาห์ = 7 วัน โดยไม่สนใจว่าวันเริ่มต้นเป็นวันจันทร์หรือวันอาทิตย์ แค่บวก 7 วันตรงไป ผมเคยงงเพราะคิดว่าจะ “จัดแนว” ให้ตรงตอนท้ายสัปดาห์ แต่ปรากฎว่าไม่ได้ทำแบบนั้น 😅
ผลลัพธ์ออกมาเหมือนกันเลย แต่ทำไมถึงต้องใช้ Date.AddWeeks? ก็เพราะว่า Code ของเราจะ readable มากขึ้น ถ้าคนอื่นอ่าน Date.AddWeeks(date, 4) จะรู้ทันทีว่ากำลังเพิ่ม “4 สัปดาห์” แต่ถ้า Date.AddDays(date, 28) ต้องนั่งนับ 28 ÷ 7 อีกครั้งหนึ่ง 555
ทั้งสองแบบใช้ได้ครับ ถ้าส่งเข้า date จะคืน date ถ้าส่งเข้า datetime จะคืน datetime ถ้าส่งเข้า datetimezone จะคืน datetimezone ฟังก์ชันนี้ชาญฉลาดตรงนี้ ไม่ต้องแปลง data type กลับไปกลับมา
ได้ครับ ถ้าเซลล์หรือ Column มีค่า date หรือ datetime อยู่แล้ว ก็เขียน = Table.AddColumn(Source, “NextWeek”, each Date.AddWeeks([DateColumn], 1)) เป็นต้น ผมใช้อย่างนี้บ่อยมาก เวลาต้องสร้าง Column ใหม่ที่เก็บวันที่ในอนาคต
Date.AddWeeks เพิ่มจำนวนสัปดาห์ให้กับค่าวันที่ โดยนับแบบตรงไป 1 สัปดาห์ = 7 วันเท่านั้น ไม่ขึ้นอยู่กับว่าวันเริ่มต้นเป็นวันจันทร์หรือวันอาทิตย์ ใช้จำนวนลบเพื่อลบสัปดาห์ออกจากวันที่ดั้งเดิม ค่า return จะคืนประเภท data type เดียวกับที่ส่งเข้ามา
ที่เจ๋งคือสามารถใช้ได้กับ date, datetime และ datetimezone ทั้งหมด ฟังก์ชันจึงยืดหยุ่นมากในการทำงานกับข้อมูลลักษณะต่างๆ ไม่ต้องแปลงประเภท data type ซ้ำซ้อน
ส่วนตัวผมใช้บ่อยมากเวลาต้องคำนวณตามรอบสัปดาห์ เช่น วางแผนโปรเจค คำนวณ deadline ในอนาคต หรือไปดึงข้อมูลสัปดาห์ที่แล้ว ปลอดภัยกว่า Date.AddDays(date, 7) เพราะมีความชัดเจนว่ากำลังบวก “สัปดาห์” ไม่ใช่ “7 วัน” 😎