Thep Excel

DATESBETWEENสร้างช่วงวันที่ระหว่างวันเริ่มและวันสิ้นสุด

DATESBETWEEN คืนตารางวันที่ที่อยู่ระหว่าง StartDate และ EndDate (รวมวันเริ่ม/วันจบ) เหมาะกับการใช้เป็นตัวกรองเวลาใน CALCULATE เพื่อคำนวณตามช่วงวันที่ที่กำหนดเอง

fx
=DATESBETWEEN(<Dates>, <StartDate>, <EndDate>)

ความนิยม6/10
ความยาก4/10
ประโยชน์6/10

อัปเดต 13 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
Dates column คอลัมน์วันที่จากตารางวันที่/ปฏิทิน ต้องเป็นคอลัมน์ที่มีข้อมูลวันที่ต่อเนื่องจริง
StartDate date/datetime/expression วันเริ่มต้นของช่วง (รวมในผลลัพธ์) สามารถเป็นค่า DATE, วันที่จากตัวแปร หรือ BLANK() ถ้า BLANK จะใช้วันที่แรกสุดในคอลัมน์ Dates
EndDate date/datetime/expression วันสิ้นสุดของช่วง (รวมในผลลัพธ์) สามารถเป็นค่า DATE, วันที่จากตัวแปร หรือ BLANK() ถ้า BLANK จะใช้วันที่สุดท้ายในคอลัมน์ Dates

Additional Notes

DATESBETWEEN ใช้สร้าง ‘ตารางของวันที่’ ในช่วงที่กำหนด โดยระบุวันเริ่มต้น (StartDate) และวันสิ้นสุด (EndDate) แล้วคืนวันที่ทั้งหมดที่อยู่ในช่วงนั้น (รวมวันเริ่มและวันจบ)

สิ่งที่เจ๋งของ DATESBETWEEN คือมันช่วยให้เราสร้างตัวกรองเวลาแบบยืดหยุ่น ไม่ต้องพึ่งพาช่วง Fixed Time Intelligence ที่มีอยู่แล้ว ใช้งานได้กับช่วงแคมเปญ, ช่วงสะสมตั้งแต่วันเริ่มโครงการ, หรือช่วงการวิเคราะห์แบบ Custom ได้

ส่วนตัวผม ถ้าต้องทำ Life-to-Date (ยอดสะสมตั้งแต่แรกจนถึงปัจจุบัน) มักใช้ DATESBETWEEN กับ BLANK() และ TODAY() จึงสะดวกและอ่านเข้าใจง่ายมาก 😎

How it works

ยอดขายในช่วงวันที่ที่กำหนด

เช่น ช่วงโปรโมชั่นหรือแคมเปญ

สะสมตั้งแต่วันเริ่มโครงการ

เช่น สะสมยอดตั้งแต่วันเริ่มต้นที่กำหนดจนถึงวันนี้

Examples

ตัวอย่างที่ 1: ยอดขายช่วงแคมเปญSales (Campaign) = CALCULATE( [Sales Amount], DATESBETWEEN( 'DimDate'[Date], DATE(2025, 11, 1), DATE(2025, 11, 30) ) )

DATESBETWEEN สร้างชุดวันที่ของช่วงแคมเปญที่ต้องการ (พ.ย. 2025) แล้ว CALCULATE ใช้ชุดวันที่นั้นเป็นตัวกรองเวลา เพื่อให้ [Sales Amount] นับเฉพาะยอดขายในช่วงนั้น

fx
=Sales (Campaign) =
CALCULATE(
[Sales Amount],
DATESBETWEEN(
'DimDate'[Date],
DATE(2025, 11, 1),
DATE(2025, 11, 30)
)
)

ผลลัพธ์ยอดขายในช่วง 1–30 พ.ย. 2025 เฉพาะ
ตัวอย่างที่ 2: ยอดสะสมตั้งแต่วันเริ่มต้นที่กำหนดจนถึงวันนี้ (Life-to-Date)Sales (Since Launch) = CALCULATE( [Sales Amount], DATESBETWEEN( 'DimDate'[Date], DATE(2025, 1, 15), TODAY() ) )

เหมาะกับการคำนวณสะสมตั้งแต่วันเริ่มโครงการ โดยใช้ TODAY() เป็นวันสิ้นสุด ช่วยให้เห็นความก้าวหน้าตั้งแต่เปิดตัว

fx
=Sales (Since Launch) =
CALCULATE(
[Sales Amount],
DATESBETWEEN(
'DimDate'[Date],
DATE(2025, 1, 15),
TODAY()
)
)

ผลลัพธ์ยอดขายสะสมตั้งแต่ 15 ม.ค. 2025 ถึงวันนี้
ตัวอย่างที่ 3: ใช้ BLANK() เพื่อให้ครอบคลุมตั้งแต่วันแรกสุดSales (Cumulative) = CALCULATE( [Sales Amount], DATESBETWEEN( 'DimDate'[Date], BLANK(), MAX('DimDate'[Date]) ) )

เมื่อ StartDate เป็น BLANK(), DATESBETWEEN จะใช้วันที่แรกสุดในคอลัมน์ 'DimDate'[Date] เป็นจุดเริ่มต้น ส่วน MAX('DimDate'[Date]) คืนวันที่ล่าสุด เหมาะกับการคำนวณยอดสะสมแบบเต็มที่

fx
=Sales (Cumulative) =
CALCULATE(
[Sales Amount],
DATESBETWEEN(
'DimDate'[Date],
BLANK(),
MAX('DimDate'[Date])
)
)

ผลลัพธ์ยอดขายสะสมตั้งแต่วันแรกของข้อมูลจนถึงวันล่าสุด
ตัวอย่างที่ 4: สร้างตารางวันที่เพื่อตรวจสอบผล (Debugging)Custom Dates = DATESBETWEEN( 'DimDate'[Date], DATE(2025, 6, 1), DATE(2025, 6, 15) )

DATESBETWEEN คืนค่าเป็นตาราง จึงสามารถใช้ในเมื่อ/คำนวณตารางเพื่อดูช่วงวันที่ที่ได้จริง

fx
Custom Dates =
DATESBETWEEN(
'DimDate'[Date],
DATE(2025, 6, 1),
DATE(2025, 6, 15)
)

ผลลัพธ์ตารางวันที่ของช่วง 1–15 มิ.ย. 2025 (15 แถว)

FAQs

DATESBETWEEN คืนค่าเป็นตารางหรือค่าสเกลาร์?+

คืนค่าเป็นตารางของวันที่ (Table) จึงมักใช้เป็นตัวกรองภายใน CALCULATE เพื่อให้มาตรวัด (Measure) คืนค่าสเกลาร์ ไม่ใช่ตารางสำเร็จรูป

ควรใช้ Dates จากตารางแบบไหน?+

ควรใช้คอลัมน์วันที่จากตารางวันที่ที่ต่อเนื่องและกำหนดเป็นตารางวันที่ของโมเดล (Date Table) เพื่อให้ผลการคำนวณช่วงเวลาถูกต้องและมีประสิทธิภาพ

ถ้าวันเริ่มต้นหรือวันสิ้นสุดไม่มีข้อมูลจะเป็นไงบ้าง?+

DATESBETWEEN ยังคงรวมวันเหล่านั้นในตารางผลลัพธ์ แม้ว่าอาจไม่มีข้อมูลการขาย หากต้องการรวมเฉพาะวันที่มีข้อมูล อาจต้องใช้ FILTER ร่วมกับ DATESBETWEEN

DATESBETWEEN ต่างจาก DATESINPERIOD ยังไง?+

DATESBETWEEN ใช้กับช่วงวันที่ที่กำหนดตายตัว (Fixed) เช่น 1-30 พ.ย. ส่วน DATESINPERIOD เหมาะกับช่วง Relative หรือ Offset เช่น ย้อนหลัง 3 เดือนจากวันปัจจุบัน

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ DATESBETWEEN จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้DATESBETWEENTime Intelligence
Time Intelligence (17)
DATEADD

DATEADD คืนค่าตารางวันที่ ที่ถูกเลื่อนออกไปจากช่วงวันที่ใน Context ปัจจุบัน ตามจำนวน (NumberOfIntervals) และหน่วย (Interval) ที่กำหนด เช่น เลื่อนย้อนหลัง 1 เดือน หรือเลื่อนไปข้างหน้า 1 ปี

DATESINPERIOD

DATESINPERIOD คืนตารางวันที่แบบเคลื่อนที่ โดยเริ่มจาก StartDate และขยายไปตามจำนวนช่วงและหน่วยที่กำหนด เหมาะกับการทำคำนวณแบบ rolling YTD, rolling average, ย้อนหลัง หรือล่วงหน้าแบบยืดหยุ่น

DATESMTD

DATESMTD คืนตารางวันที่ของช่วงตั้งแต่ต้นเดือนถึงวันที่ล่าสุดใน filter context เหมาะกับการทำยอดสะสมตั้งแต่ต้นเดือน (MTD) โดยใช้ร่วมกับ CALCULATE และควรใช้คู่กับ ShowValueForDates pattern เพื่อไม่ให้แสดงค่าในวันที่ยังไม่มีข้อมูล

DATESQTD

DATESQTD คืนตารางวันที่ของช่วงตั้งแต่ต้นไตรมาสถึงวันที่ล่าสุดในบริบทปัจจุบัน เหมาะสำหรับสร้างมาตรวัด QTD ใน CALCULATE โดยทำงานร่วมกับ Time Intelligence Functions ตัวอื่นๆ ได้ดี และควรใช้คู่กับ ShowValueForDates pattern เพื่อป้องกันการแสดงค่าในอนาคต

DATESWTD

DATESWTD คืนตารางวันที่ตั้งแต่ต้นสัปดาห์จนถึงวันที่ในบริบทปัจจุบัน ใช้เป็นตัวกรองเวลาใน CALCULATE เพื่อคำนวณยอดสะสมตั้งแต่ต้นสัปดาห์

DATESYTD

DATESYTD คืนตารางวันที่ของช่วงตั้งแต่ต้นปีถึงวันที่สุดท้ายที่มองเห็นใน Filter Context ใช้เป็นตัวกรองเวลาใน CALCULATE สำหรับการคำนวณยอดสะสมตั้งแต่ต้นปี รองรับทั้งปีปฏิทินและปีบัญชี (Fiscal Year) ด้วย YearEndDate argument

FIRSTDATE

FIRSTDATE คืนค่าวันที่แรกในบริบทตัวกรองปัจจุบัน เหมาะใช้เป็นตัวกรองให้ CALCULATE เพื่อหายอดขาย/จำนวนของวันแรกในช่วงที่เลือก

LASTDATE

LASTDATE คืนค่าตารางที่มีวันที่สุดท้ายในบริบทตัวกรองปัจจุบัน มักใช้เป็นตารางตัวกรองให้ CALCULATE เพื่อคำนวณ measure ณ วันสุดท้ายของช่วงที่เลือก และสามารถใช้ MAXX เพื่อแปลงผลเป็น scalar date ได้

PARALLELPERIOD

PARALLELPERIOD คืนตารางวันที่ที่ขนานกับช่วงเวลาปัจจุบัน แต่เลื่อนไปข้างหน้าหรือย้อนหลัง และขยายขอบเขตให้ครอบคลุมทั้งหน่วยเวลาที่ระบุ (MONTH/QUARTER/YEAR) เสมอ เหมาะกับการเทียบยอดรวมทั้งเดือน/ไตรมาส/ปี

STARTOFMONTH

STARTOFMONTH คืนวันแรกของเดือนเป็นตาราง 1 แถว ใช้กับการวัดที่ขึ้นต่อจุดเวลา เช่น ยอดคงเหลือ บัญชี หรือสินค้าคงคลัง

STARTOFQUARTER

STARTOFQUARTER คืนตารางวันที่ที่มีวันแรกของไตรมาสในบริบทตัวกรองปัจจุบัน (single-row table) ใช้เป็นตารางตัวกรองใน CALCULATE หรือใช้ MINX เพื่อแปลงเป็น scalar date

STARTOFWEEK

STARTOFWEEK คืนตารางที่มีวันแรกของสัปดาห์ตามปฏิทินที่กำหนด ใช้เป็นตัวกรองใน CALCULATE หรือดึงค่าสเกลาร์ด้วย MINX ฟังก์ชันนี้จำเป็นต้องมีตารางวันที่ที่ถูกกำหนดไว้เป็น Date Table

STARTOFYEAR

STARTOFYEAR คืนตาราง 1 แถวที่มีวันที่วันแรกของปีในบริบทปัจจุบัน ใช้สำหรับ semi-additive measure เช่น inventory balance หรือเปรียบเทียบ year-to-date

TOTALMTD

คำนวณยอดสะสมตั้งแต่ต้นเดือน (Month-to-Date) ของ Expression ตามคอลัมน์วันที่ที่กำหนด เป็นทางลัดของ CALCULATE + DATESMTD

TOTALQTD

TOTALQTD คำนวณยอดสะสมตั้งแต่วันแรกของไตรมาส (Q1/Q2/Q3/Q4) จนถึงวันที่ล่าสุดใน filter context ปัจจุบัน
.
ส่วนตัวผมใช้บ่อยมากตอน analyze quarterly performance และการวิเคราะห์ KPI รายไตรมาสครับ

TOTALWTD

คำนวณยอดสะสมตั้งแต่ต้นสัปดาห์ (Week-to-Date) ของ Expression ตามคอลัมน์วันที่ที่กำหนด โดยรวมข้อมูลจากวันแรกของสัปดาห์จนถึงวันปัจจุบันในบริบท

TOTALYTD

TOTALYTD คำนวณยอดสะสมตั้งแต่ต้นปี (Year-to-Date) ของ expression ใดๆ โดยอิงจาก Date table และสามารถกำหนด fiscal year end date เพื่อรองรับปีงบประมาณที่ไม่ตรงกับปีปฏิทินได้
.
ส่วนตัวผมใช้บ่อยมากตอนต้องวิเคราะห์ยอดขาย KPI และรายงานทางการเงินที่ต้องการติดตามความก้าวหน้าตลอดทั้งปีครับ

Filter (1)
CALCULATE

CALCULATE เป็นฟังก์ชันหลักที่สำคัญที่สุดใน DAX ใช้สำหรับ evaluate expression ภายใต้ filter context ที่ถูกปรับเปลี่ยน สามารถเพิ่มตัวกรองใหม่ ลบตัวกรองเดิม หรือแทนที่ filter ที่มีอยู่ได้ รองรับทั้ง Boolean expression และ table expression เป็น filter arguments พร้อม filter modifier functions เช่น REMOVEFILTERS, ALL, ALLEXCEPT, KEEPFILTERS เพื่อควบคุมการกรองอย่างละเอียด มีพฤติกรรมพิเศษคือ context transition ที่เปลี่ยน row context เป็น filter context โดยอัตโนมัติ ทำให้เป็นเครื่องมือหลักในการสร้าง measure ที่ซับซ้อนและ calculated column ที่ต้องใช้ aggregation

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่