---
title: DATESBETWEEN – สร้างช่วงวันที่ระหว่างวันเริ่มและวันสิ้นสุด
url: https://www.thepexcel.com/functions/dax/time-intelligence/datesbetween-dax/
type: function-explainer
program: DAX
syntax: "DATESBETWEEN(<Dates>, <StartDate>, <EndDate>)"
date: 2025-12-13
updated: 2025-12-24
scores:
  popularity: 6
  difficulty: 4
  usefulness: 6
---

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

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

## คำอธิบาย

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

## Syntax

```excel
DATESBETWEEN(&lt;Dates&gt;, &lt;StartDate&gt;, &lt;EndDate&gt;)
```

**Variant**

```excel
DATESBETWEEN(&lt;Dates&gt;, &lt;StartDate&gt;, &lt;EndDate&gt;)
```

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

## Arguments

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

## เคสการใช้งาน

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

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

_เหมาะกับ:_ custom-period-sales

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

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

_เหมาะกับ:_ life-to-date

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: ยอดขายช่วงแคมเปญ

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

**ผลลัพธ์:** `ยอดขายในช่วง 1–30 พ.ย. 2025 เฉพาะ`

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

### 2. ตัวอย่างที่ 2: ยอดสะสมตั้งแต่วันเริ่มต้นที่กำหนดจนถึงวันนี้ (Life-to-Date)

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

**ผลลัพธ์:** `ยอดขายสะสมตั้งแต่ 15 ม.ค. 2025 ถึงวันนี้`

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

### 3. ตัวอย่างที่ 3: ใช้ BLANK() เพื่อให้ครอบคลุมตั้งแต่วันแรกสุด

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

**ผลลัพธ์:** `ยอดขายสะสมตั้งแต่วันแรกของข้อมูลจนถึงวันล่าสุด`

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

### 4. ตัวอย่างที่ 4: สร้างตารางวันที่เพื่อตรวจสอบผล (Debugging)

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

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

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

## หมายเหตุเพิ่มเติม

- ถ้าต้องการช่วงแบบเคลื่อนที่ (Rolling) เช่น ย้อนหลัง 3 เดือนจากวันล่าสุด ให้ดู DATESINPERIOD ซึ่งเหมาะกับงานแบบเคลื่อนที่มากกว่า

- สามารถใช้ BLANK() แทน StartDate หรือ EndDate เพื่อให้ DATESBETWEEN ใช้วันแรกสุดหรือวันล่าสุดของข้อมูลโดยอัตโนมัติ

- DATESBETWEEN ไม่อนุญาตใน RLS (Row-Level Security) หรือ Calculated Columns ในโหมด DirectQuery

- สามารถเขียนสิ่งนี้ตามที่ต้องการด้วย VAR เพื่อให้โค้ด DAX อ่านเข้าใจง่ายยิ่งขึ้น: VAR StartDate = DATE(2025,1,1) VAR EndDate = TODAY()

## คำถามที่พบบ่อย

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

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

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

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

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

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

**Q: DATESBETWEEN ต่างจาก DATESINPERIOD ยังไง?**

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

## ฟังก์ชันที่เกี่ยวข้อง

- calculate
- datesinperiod
- dateadd
- datesytd
- datesmtd
- datesqtd
- dateswtd
- today-dax

## แหล่งข้อมูลเพิ่มเติม

- [Microsoft Learn: DATESBETWEEN](https://learn.microsoft.com/en-us/dax/datesbetween-function-dax) _(official)_
- [DAX.guide: DATESBETWEEN](https://dax.guide/datesbetween/) _(guide)_

---

_Source: [https://www.thepexcel.com/functions/dax/time-intelligence/datesbetween-dax/](https://www.thepexcel.com/functions/dax/time-intelligence/datesbetween-dax/)_
