---
title: FIRSTDATE – วันที่แรกในบริบทตัวกรองปัจจุบัน
url: https://www.thepexcel.com/functions/dax/time-intelligence/firstdate-dax/
type: function-explainer
program: DAX
syntax: "FIRSTDATE(<Dates>)"
date: 2025-12-13
updated: 2025-12-25
scores:
  popularity: 6
  difficulty: 3
  usefulness: 6
---

# FIRSTDATE – วันที่แรกในบริบทตัวกรองปัจจุบัน

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

## คำอธิบาย

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

## Syntax

```excel
FIRSTDATE(&lt;Dates&gt;)
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| Dates | Yes | column \| table expression |  | คอลัมน์วันที่หรือ table expression ที่คืนค่าคอลัมน์วันที่เดี่ยว |

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

### ยอดขายของวันแรกในช่วงที่เลือก

คำนวณ [Total Sales] เฉพาะวันแรกของช่วงที่ถูกกรอง

_เหมาะกับ:_ first-day-sales

### หา “วันที่แรก” เป็นค่าเดี่ยว

แปลงผลลัพธ์จากตารางให้เป็น scalar date เพื่อใช้แสดงผล

_เหมาะกับ:_ extract-first-date

### เปรียบเทียบวันแรกและวันสุดท้าย

ใช้คู่กับ LASTDATE เพื่อคำนวณความต่างของช่วงเวลา

_เหมาะกับ:_ range-comparison

## ตัวอย่าง

### 1. หายอดขายของวันแรกในช่วง

```excel
ยอดขายวันแรก =
VAR FirstDateInContext = FIRSTDATE('Date'[Date])
RETURN
    CALCULATE(
        [Total Sales],
        FirstDateInContext
    )
```

**ผลลัพธ์:** `ได้ยอดขายเฉพาะวันแรกของช่วงที่ถูกกรอง`

ใช้ VAR เก็บ FIRSTDATE ไว้ก่อน แล้วใส่เข้าไปใน CALCULATE เป็นตัวกรอง ผลจะได้ยอดขายของวันแรกในบริบท

### 2. ดึงวันที่แรกออกมาเป็นค่า (scalar date)

```excel
วันที่แรก (Scalar) =
MINX(
    FIRSTDATE('Date'[Date]),
    'Date'[Date]
)
```

**ผลลัพธ์:** `ได้วันที่แรกเป็นค่าเดี่ยว (date/datetime) เช่น 2025-01-01`

FIRSTDATE คืนตาราง ถ้าต้องการค่าเดี่ยวให้ใช้ MINX (หรือ MAX) วนบนตารางนั้น ค่อนข้างไม่เอาไหนแต่บางครั้งต้องการแบบนี้

### 3. Opening Balance - ยอดคงคลัง ต้นไตรมาส

```excel
Opening Balance Quarter =
CALCULATE(
    [Total Stock],
    FIRSTDATE(
        DATESBETWEEN(
            'Date'[Date],
            STARTOFQUARTER('Date'[Date]),
            MAX('Date'[Date])
        )
    )
)
```

**ผลลัพธ์:** `ได้ยอดคงคลังของวันแรกของไตรมาส`

ตัวอย่างสำคัญ - opening balance กำหนด date range เป็นต้นไตรมาส แล้วหา FIRSTDATE ของช่วงนั้น ใช้ FIRSTDATE แบบนี้บ่อยมากในการวิเคราะห์คลังสินค้า/ทางการเงิน

### 4. หาจำนวนวันในช่วงที่เลือก

```excel
จำนวนวันในช่วง =
DATEDIFF(
    MINX(FIRSTDATE('Date'[Date]), 'Date'[Date]),
    MAX('Date'[Date]),
    DAY
) + 1
```

**ผลลัพธ์:** `ได้จำนวนวันระหว่างวันแรกและวันสุดท้าย`

ใช้ FIRSTDATE ดึงวันแรก (แปลงเป็น scalar ด้วย MINX) แล้วเปรียบเทียบกับ MAX ของวันสุดท้าย DATEDIFF หาความต่าง

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

- ผมแนะนำให้ใช้ VAR เก็บ FIRSTDATE ไว้ก่อน แล้วค่อยใส่เข้า CALCULATE หรือ function อื่น จะอ่านได้ง่ายและ debug ง่าย

- ส่วนตัวผม ถ้าแค่ต้องการค่า scalar date ผมจะใช้ MIN() ตรง ๆ จะง่ายกว่า แต่ถ้าต้องการตัวกรองให้ CALCULATE นั่นเป็นเมื่อ FIRSTDATE จริง ๆ เด่น

- ระวังเมื่อใช้ FIRSTDATE กับ row context (เช่นใน calculated column) ถ้าไม่มี Date table มักให้ผลลัพธ์ไม่ถูก context transition ไป filter context ก่อนแล้ว

- ใช้ร่วมกับ DATESBETWEEN หรือ DATEADD เมื่อต้อง custom date range ได้ดี เช่น opening balance ต้น period

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

**Q: FIRSTDATE คืนค่าเป็นตารางหรือค่าเดี่ยว?**

FIRSTDATE คืนค่าเป็น **ตารางหนึ่งแถว** (single-row table) ไม่ใช่ scalar date ถ้าต้องการค่าเดี่ยว ให้ใช้ iterator เช่น MINX() หรือ MAX() วนบนตารางนั้น หรือใช้ MIN() เลยถ้าแค่อยากได้ scalar โดยตรง

**Q: ควรใช้ MIN('Date'[Date]) แทน FIRSTDATE ได้ไหม?**

**ได้บ่อยมาก** MIN ให้ scalar โดยตรงแต่หากคุณต้องการใช้เป็นตัวกรองกับ CALCULATE (เพื่อให้ filter context ถูกต้อง) ให้ใช้ FIRSTDATE เพราะมัน return table ที่สามารถถูกใช้เป็นตัวกรองได้ ผมแนะนำให้ลองทั้งสองวิธี แล้วเลือกตามที่ให้ผลถูกต้อง

**Q: FIRSTDATE กับ FIRSTNONBLANK ต่างกันอย่างไร?**

FIRSTDATE หาวันที่แรก (first date in chronological order) ส่วน FIRSTNONBLANK หาค่าแรกที่ไม่ว่าง (first non-blank value in a column) ใช้โลจิกต่างกัน FIRSTNONBLANK ใช้ได้กับ column ใดก็ได้ ไม่ใช่แค่ date

**Q: ต้องมี Date table ไหม?**

ไม่ **ต้อง** มี Date table แต่ถ้ามี และทำเครื่องหมายเป็น Date table แล้ว time intelligence (FIRSTDATE, LASTDATE, เป็นต้น) จะทำงานได้ดีและถูกต้องมากขึ้น หากไม่มี Date table FIRSTDATE ยังคงทำงาน แต่อาจให้ผลลัพธ์ที่ไม่คาดหวังได้

**Q: FIRSTDATE ใช้กับ DirectQuery ได้ไหม?**

**ไม่ได้** FIRSTDATE ไม่รองรับ DirectQuery mode สำหรับ calculated column หรือ RLS rule หากต้องใช้ DirectQuery ต้องหา alternative

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

- lastdate
- firstnonblank
- calculate
- minx
- [MAX – หาค่าสูงสุดในคอลัมน์หรือเปรียบเทียบสองค่า](https://www.thepexcel.com/functions/dax/aggregation/max-dax/)
- datediff
- datesbetween

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

- [DAX.guide - FIRSTDATE](https://dax.guide/firstdate/) _(guide)_
- [Microsoft Learn - FIRSTDATE Function](https://learn.microsoft.com/en-us/dax/firstdate-function-dax) _(official)_
- [SQLBI - Time Intelligence Functions](https://www.sqlbi.com/articles/dax-time-intelligence/) _(guide)_

---

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