---
title: DATE – สร้างวันที่จากปี เดือน วัน
url: https://www.thepexcel.com/functions/dax/date-and-time/date-dax/
type: function-explainer
program: DAX
syntax: "DATE(<Year>, <Month>, <Day>)"
date: 2025-12-13
updated: 2025-12-23
scores:
  popularity: 8
  difficulty: 2
  usefulness: 8
---

# DATE – สร้างวันที่จากปี เดือน วัน

> DATE สร้างค่าวันที่จากตัวเลข Year/Month/Day แล้วคืนค่าเป็นชนิด datetime เหมาะกับการประกอบวันที่จากคอ

## คำอธิบาย

DATE สร้างค่าวันที่จากตัวเลข Year/Month/Day แล้วคืนค่าเป็นชนิด datetime เหมาะกับการประกอบวันที่จากคอลัมน์แยกส่วนหรือสร้างวันที่อ้างอิง เช่น วันแรกของเดือน วันตัดยอด

## Syntax

```excel
DATE(&lt;Year&gt;, &lt;Month&gt;, &lt;Day&gt;)
```

**Variant**

```excel
DATE(&lt;Year&gt;, &lt;Month&gt;, &lt;Day&gt;)
```

สร้างวันที่จากตัวเลขปี เดือน และวัน

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| Year | Yes | Integer |  | ปี เช่น 2025 หรือ 25 (ค่า 0-49 ถูกตีความว่า 2000-2049, 50-99 ถูกตีความว่า 1900-1999) |
| Month | Yes | Integer |  | เดือน (1-12) ค่าเกิน 12 จะเลื่อนไปปีถัดไป เช่น เดือน 14 = เดือนที่ 2 ของปีถัดไป |
| Day | Yes | Integer |  | วัน (1-31) ค่าเกินจำนวนวันในเดือน จะเลื่อนไปเดือนถัดไป เช่น 35 มกราคม = 4 กุมภาพันธ์ |

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

### สร้างวันเริ่มต้นของเดือน

เช่น สร้างวันที่ของวันแรกในเดือนที่ระบุ

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

### ประกอบวันที่จากคอลัมน์ปีและเดือน

เช่น มี Year/Month แยกคอลัมน์ ต้องการสร้างวันที่เพื่อเชื่อมกับตารางวันที่

_เหมาะกับ:_ build-date-from-parts

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: สร้างวันที่แบบคงที่ (Reference Date)

```excel
Cutoff Date =
DATE(2025, 12, 31)
```

**ผลลัพธ์:** `31/12/2025`

ใช้สร้างวันอ้างอิงคงที่ เช่น วันตัดยอดปี วันเปิดต้นปี เหมาะสำหรับเปรียบเทียบการณ์ "ก่อน/หลัง" วันที่ระบุ

### 2. ตัวอย่างที่ 2: ประกอบวันที่จากคอลัมน์ Year/Month/Day

```excel
Start Date = 
DATE(Orders[Year], Orders[Month], 1)
```

**ผลลัพธ์:** `วันแรกของเดือนตามข้อมูลในแต่ละแถว`

เมื่อข้อมูลมี Year, Month แยกกัน ใช้ DATE สร้างวันที่จริงเพื่อวิเคราะห์ตามเวลา (time-based analysis) หรือสร้าง Date Dimension

### 3. ตัวอย่างที่ 3: สร้าง Date Table ด้วย CALENDAR

```excel
DateTable = 
CALENDAR(
    DATE(2024, 1, 1),
    DATE(2024, 12, 31)
)
```

**ผลลัพธ์:** `ตารางวันที่ทั้งปี 2024 (365 แถว)`

DATE ช่วยกำหนดช่วงวันเริ่มต้นและสิ้นสุดให้ชัดเจน ส่วน CALENDAR จะสร้างแถวสำหรับทุกวันในช่วง

### 4. ตัวอย่างที่ 4: การจัดการ Overflow (เดือนเกิน)

```excel
Next Month Date = 
DATE(Sales[Year], Sales[Month] + 1, 1)
```

**ผลลัพธ์:** `วันแรกของเดือนถัดไป (หากเดือน = 12 ก็จะเป็น 1/1 ปีถัดไป)`

DATE โดยอัตโนมัติหมุนปีเมื่อเดือนเกิน 12 ไม่ต้องใช้ IF เพื่อจัดการพิเศษ

### 5. ตัวอย่างที่ 5: การจัดการ Day Overflow (วันเกิน)

```excel
Last Day = 
DATE(2025, 2, 35)
```

**ผลลัพธ์:** `7/3/2025`

ขอวันที่ 35 กุมภาพันธ์ → DAX เลื่อนไปมีนาคม (Feb มี 28 วัน + 7 = March 7) เหมาะสำหรับคำนวณ "วันต่อจากนี้ไป N วัน"

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

- ถ้าข้อมูล Year/Month/Day แยกอยู่คนละคอลัมน์ DATE เป็นตัวช่วยที่สำคัญเพื่อสร้างวันที่จริง (datetime) แล้วตั้งเป็น relationship key ให้กับ Date Table

- ใช้ DATE ร่วมกับ CALENDAR เพื่อสร้าง Date Table ที่มีประสิทธิภาพ แทนการพึ่งพาวันที่ในตัวข้อมูล

- DATE overflow ออกแบบเพื่อให้สูตรตรงไปตรงมา เช่น DATE(Year, Month + 3, 1) สร้างวันแรกของ 3 เดือนถัดไป โดยไม่ต้อง IF check

- ระวัง: ถ้ากำหนดปีเป็น 2 หลัก เช่น DATE(25, 1, 1) ค่า 25 ถูกตีความเป็น 1925 (ตามกฎ 50-99) ใช้ 4 หลักเสมอให้ปลอดภัย

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

**Q: ถ้า Month หรือ Day เกินช่วง DAX จะประมวลผลอย่างไร?**

DAX จัดการ overflow โดยหมุนไปหน่วยที่สูงกว่า เช่น เดือน 13 → เดือน 1 ปีถัดไป, วันที่ 32 มกราคม → 1 กุมภาพันธ์ ซึ่งมีประโยชน์ในการคำนวณตัวอักษรแบบไดนามิก

**Q: DATE ต่างจาก DATEVALUE อย่างไร?**

DATE สร้างวันที่จากตัวเลข Year/Month/Day (ตัวเลข), ส่วน DATEVALUE แปลงข้อความที่เป็นวันที่ให้เป็นชนิด datetime เลือกใช้ตามว่าข้อมูลต้นฉบับเป็นตัวเลขหรือข้อความ

**Q: DATE รองรับ DirectQuery ไหม?**

ใช่ DATE รองรับใน DirectQuery สำหรับ measures และ calculated columns ในทุก Power BI, Excel, SSAS Tabular, Azure Analysis Services

**Q: หากใส่ค่าทศนิยม เช่น DATE(2025, 12, 25.7) จะเป็นอย่างไร?**

DAX จะปัดเศษให้เป็นจำนวนเต็มก่อน ดังนั้น 25.7 ≈ 26 ถ้าหากต้องการความแม่นยำ ควรปัดเศษล่วงหน้าด้วย INT() หรือ ROUND()

**Q: ปีเดือนวัน 0 หรือค่าลบจะเป็นอย่างไร?**

ค่า 0 หรือลบจะทำให้เกิด error ในบางกรณี ควรตรวจสอบข้อมูล input ให้ถูกต้องโดยใช้ IF หรือ IFERROR

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

- [Microsoft Learn: DATE Function](https://learn.microsoft.com/en-us/dax/date-function-dax) _(official)_
- [DAX Guide: DATE](https://dax.guide/date/) _(guide)_

---

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