Thep Excel

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

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

fx
=DATE(<Year>, <Month>, <Day>)

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

อัปเดต 13 December 2025

Syntax & Arguments

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

Additional Notes

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

ที่เจ๋งของ DATE คือมันสามารถจัดการ overflow อัตโนมัติ เช่น ถ้าบอกให้สร้างวันที่ “เดือนที่ 14” มันจะหมุนไปปีถัดไปเองโดยไม่ error ซึ่งทำให้สร้างการคำนวณโดยไม่ต้องกังวลเรื่อง edge case

ส่วนตัวผมคิดว่า DATE ถูกใช้บ่อยที่สุดเมื่อมีข้อมูล Year/Month/Day แยกกันในตาราง หรือต้องการสร้างวันที่คงที่สำหรับการเปรียบเทียบ เช่น วันสิ้นปี วันตัดยอด แล้วใช้ร่วมกับ CALENDAR เพื่อสร้าง Date Table 😎

How it works

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

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

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

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

Examples

ตัวอย่างที่ 1: สร้างวันที่แบบคงที่ (Reference Date)Cutoff Date = DATE(2025, 12, 31)

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

fx
Cutoff Date =
DATE(2025, 12, 31)

ผลลัพธ์31/12/2025
ตัวอย่างที่ 2: ประกอบวันที่จากคอลัมน์ Year/Month/DayStart Date = DATE(Orders[Year], Orders[Month], 1)

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

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

ผลลัพธ์วันแรกของเดือนตามข้อมูลในแต่ละแถว
ตัวอย่างที่ 3: สร้าง Date Table ด้วย CALENDARDateTable = CALENDAR( DATE(2024, 1, 1), DATE(2024, 12, 31) )

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

fx
DateTable =
CALENDAR(
DATE(2024, 1, 1),
DATE(2024, 12, 31)
)

ผลลัพธ์ตารางวันที่ทั้งปี 2024 (365 แถว)
ตัวอย่างที่ 4: การจัดการ Overflow (เดือนเกิน)Next Month Date = DATE(Sales[Year], Sales[Month] + 1, 1)

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

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

ผลลัพธ์วันแรกของเดือนถัดไป (หากเดือน = 12 ก็จะเป็น 1/1 ปีถัดไป)
ตัวอย่างที่ 5: การจัดการ Day Overflow (วันเกิน)Last Day = DATE(2025, 2, 35)

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

fx
Last Day =
DATE(2025, 2, 35)

ผลลัพธ์7/3/2025

FAQs

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

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

DATE ต่างจาก DATEVALUE อย่างไร?+

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

DATE รองรับ DirectQuery ไหม?+

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

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

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

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

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

Resources & Related

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

ฟังก์ชันนี้DATEDate and Time
Date and Time (13)
CALENDAR

CALENDAR ใช้สำหรับสร้างตารางวันที่ครบถ้วนตั้งแต่วันเริ่มต้นถึงวันสิ้นสุดโดยไม่มีช่องว่าง เหมาะสำหรับสร้างตารางวันที่โครงสร้างพื้นฐาน (Date Dimension) ที่ใช้ร่วมกับ Time Intelligence Function

CALENDARAUTO

CALENDARAUTO สร้างตารางวันที่อัตโนมัติโดยอิงช่วงวันที่ที่พบในโมเดล และสามารถกำหนดเดือนสิ้นสุดปีบัญชีได้ เหมาะกับการสร้าง Date table แบบเร็ว ๆ แต่ควรระวังค่าวันที่ผิดปกติในข้อมูล

DATEDIFF

DATEDIFF คำนวณจำนวนช่วงเวลา (วัน, สัปดาห์, เดือน, ปี ฯลฯ) ระหว่างสองวันที่ด้วยการนับจำนวนครั้งที่ข้ามขอบเขตของช่วงเวลา เป็นฟังก์ชันพื้นฐานสำหรับการคำนวณอายุ, ระยะเวลา, และการวิเคราะห์เวลา

DATEVALUE

DATEVALUE แปลงข้อความวันที่ (text) ให้เป็น datetime โดยอ้างอิงตามการตั้งค่า locale ของ model เหมาะกับข้อมูลวันที่ที่เก็บเป็นข้อความและต้องแปลงเป็นวันที่จริงเพื่อการคำนวณตามเวลา

DAY

DAY คืนค่าเลขวันของเดือนจากค่าวันที่/เวลา (1–31) เป็นฟังก์ชันพื้นฐานสำหรับการวิเคราะห์ตามวันของเดือน การจัดกลุ่ม และการสร้างคอลัมน์ช่วย

EDATE

EDATE รับวันที่เริ่มต้นและจำนวนเดือนที่ต้องการเลื่อนไปข้างหน้า/ย้อนกลับ แล้วคืนวันที่ใหม่ที่รักษาวันเดิม (หรือวันสุดท้ายของเดือนถัดไปถ้าวันเดิมเกิน) เหมาะสำหรับวันครบกำหนดชำระ บันทึกงวด และตารางผ่อน

EDATE

EDATE คืนค่าวันที่ที่ห่างจากวันเริ่มต้นตามจำนวนเดือนที่ระบุ ใช้สำหรับคำนวณวันครบกำหนด หรือวันกำหนดส่งแบบเดือนปกติ

EOMONTH

EOMONTH คืนค่าวันสิ้นเดือนของเดือนที่เลื่อนจาก StartDate ตามจำนวน Months (บวก/ลบได้) เหมาะกับการหาวันปิดงวด วันครบกำหนด และการจัดการช่วงเวลาแบบรายเดือน

MONTH (DAX)

MONTH ดึงเลขเดือน (integer 1-12) จากค่า datetime โดยรับ input เป็น datetime value, column reference, หรือ text representation ของวันที่ และคืนค่าตั้งแต่ 1 (มกราคม) ถึง 12 (ธันวาคม) ตาม Gregorian calendar ใช้สร้าง calculated column ใน Date table เพื่อเป็น sort column สำหรับชื่อเดือน และใช้ใน measure เพื่อสร้าง conditional logic กับ custom time intelligence calculations

UTCTODAY

UTCTODAY คืนค่าวันที่ปัจจุบัน (datetime) ตามเวลา UTC ใช้เมื่ออยากได้วันที่มาตรฐานเดียวกันข้ามเขตเวลา และมักใช้คู่กับ TODAY/UTCNOW เพื่อจัดการความต่างของเขตเวลา

WEEKDAY

WEEKDAY คืนค่าเลขวันในสัปดาห์ (1-7) จากวันที่ที่กำหนด สามารถปรับรูปแบบให้เริ่มจากอาทิตย์หรือจันทร์ได้ตามต้องการ เหมาะสำหรับการแยกวันทำงาน วันหยุด หรือวิเคราะห์พฤติกรรมตามวัน

ฟังก์ชัน YEAR ใน DAX

ดึงปีจากวันที่ในรูปแบบตัวเลข 4 หลัก สำหรับวิเคราะห์ข้อมูลตามปี

YEARFRAC

YEARFRAC คืนค่าสัดส่วนของปีระหว่าง StartDate และ EndDate โดยเลือกวิธีนับวัน (Basis) ได้ เหมาะกับการวัดช่วงเวลาที่ต้องการผลลัพธ์เป็นจำนวนปีแบบทศนิยม

Table manipulation (1)
DATATABLE

DATATABLE สร้างตารางแบบ hardcode ด้วยข้อมูลคงที่ โดยระบุชื่อคอลัมน์ ชนิดข้อมูล และค่าของแต่ละแถว เหมาะสำหรับตารางอ้างอิงเล็กๆ เช่น lookup table หรือข้อมูลตัวอย่าง

Comments

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