Thep Excel

DATEDIFF – คำนวณจำนวนช่วงเวลาระหว่างสองวันที่

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

=DATEDIFF(<Date1>, <Date2>, <Interval>)

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
8/10

Difficulty
3/10

Usefulness
8/10

Syntax & Arguments

=DATEDIFF(<Date1>, <Date2>, <Interval>)

Argument Type Required Default Description
Date1 DateTime Yes วันที่เริ่มต้น (start date) สามารถเป็นคอลัมน์ที่มีค่าวันที่ หรือค่าวันที่แบบ scalar
Date2 DateTime Yes วันที่สิ้นสุด (end date) สามารถเป็นคอลัมน์ที่มีค่าวันที่ หรือค่าวันที่แบบ scalar
Interval Text Yes หน่วยของช่วงเวลา: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR – ใช้เป็นข้อความอักษรพิมพ์ใหญ่ เช่น “DAY” หรือ “MONTH”

How it works

คำนวณจำนวนวันระหว่างวันสั่งและวันส่ง

ใช้วัด lead time หรือ SLA

คำนวณจำนวนเดือน/ปีของช่วงเวลา

เช่น ระยะเวลาตั้งแต่เริ่มงานถึงวันนี้

Examples

ตัวอย่างที่ 1: คำนวณจำนวนวันระหว่างสองวันที่แบบ scalar
DATEDIFF(DATE(2024, 1, 1), DATE(2024, 12, 31), "DAY")
คำนวณจำนวนวันระหว่าง 1 มกราคม 2024 ถึง 31 ธันวาคม 2024 ได้ 364 วัน
DAX Formula:

= DATEDIFF(DATE(2024, 1, 1), DATE(2024, 12, 31), "DAY")

Result:

364

ตัวอย่างที่ 2: คำนวณอายุจากวันเกิดมาถึงวันนี้ในหน่วยปี
Age in Years = VAR BirthDate = DATE(1990, 5, 15) VAR Today = TODAY() RETURN DATEDIFF(BirthDate, Today, "YEAR")
ถ้าวันเกิดคือ 15 พฤษภาคม 1990 และวันนี้คือ 20 ธันวาคม 2024 อายุจะเป็น 34 ปี (นับจำนวนครั้งที่ข้ามขอบเขตปี)
DAX Formula:

Age in Years =
VAR BirthDate = DATE(1990, 5, 15)
VAR Today = TODAY()
RETURN
    DATEDIFF(BirthDate, Today, "YEAR")

Result:

34

ตัวอย่างที่ 3: คำนวณเวลาที่ผ่านไปในหน่วยเดือน (ในคอลัมน์ที่คำนวณได้)
Months Since Order = DATEDIFF([Order Date], TODAY(), "MONTH")
ในตาราง Sales ใช้คอลัมน์ Order Date และคำนวณว่าผ่านไปกี่เดือนจากวันสั่งซื้อมาถึงวันนี้ (สมมติว่าผ่านไป 3 เดือน)
DAX Formula:

Months Since Order =
DATEDIFF([Order Date], TODAY(), "MONTH")

Result:

3

ตัวอย่างที่ 4: ทดสอบว่าวันที่ใดน้อยกว่า (จำนวนเดือนติดลบ)
DATEDIFF(DATE(2025, 1, 1), DATE(2024, 1, 1), "MONTH")
เมื่อ Date1 มากกว่า Date2 ผลลัพธ์จะเป็นลบ ในที่นี้ 1 มกราคม 2025 มากกว่า 1 มกราคม 2024 ดังนั้นจึงได้ -12 เดือน
DAX Formula:

= DATEDIFF(DATE(2025, 1, 1), DATE(2024, 1, 1), "MONTH")

Result:

-12

ตัวอย่างที่ 5: คำนวณหลายหน่วยพร้อมกัน (DAX table constructor)
{ ("Years", DATEDIFF(DATE(2020, 1, 1), DATE(2024, 12, 31), "YEAR")), ("Months", DATEDIFF(DATE(2020, 1, 1), DATE(2024, 12, 31), "MONTH")), ("Weeks", DATEDIFF(DAT…
ใช้ table constructor เพื่อคำนวณระยะเวลาระหว่าง 1 มกราคม 2020 ถึง 31 ธันวาคม 2024 ในหลายหน่วยพร้อมกัน
DAX Formula:

= {
    ("Years", DATEDIFF(DATE(2020, 1, 1), DATE(2024, 12, 31), "YEAR")),
    ("Months", DATEDIFF(DATE(2020, 1, 1), DATE(2024, 12, 31), "MONTH")),
    ("Weeks", DATEDIFF(DATE(2020, 1, 1), DATE(2024, 12, 31), "WEEK")),
    ("Days", DATEDIFF(DATE(2020, 1, 1), DATE(2024, 12, 31), "DAY"))
}

Result:

Years=4, Months=59, Weeks=260, Days=1825

FAQs

DATEDIFF แตกต่างจาก YEARFRAC อย่างไร?

DATEDIFF นับจำนวนครั้งที่ข้ามขอบเขตของช่วงเวลา (ส่งคืนเลขจำนวนเต็ม) เช่น DATEDIFF(1/1/2000, 2/1/2000, YEAR) = 1 ปี แม้ว่าจะผ่านไป 1 เดือน ส่วน YEARFRAC จะคำนวณสัดส่วนจริง เช่น YEARFRAC(1/1/2000, 2/1/2000) = 0.083 ปี ใช้ DATEDIFF สำหรับงานคิดค้นวิยุ (เช่นอายุ) และ YEARFRAC สำหรับค่าเศษส่วน (เช่นดอกเบี้ย)

ถ้าทั้งสอง Date มีค่าเวลา (time) ด้วยจะเกิดอะไร?

DATEDIFF จะพิจารณาเพียงส่วน “วันที่” และปฏิบัติต่อส่วน “เวลา” ว่าเป็น 00:00:00 ตัวอย่างเช่น DATEDIFF(2024/1/1 15:30:00, 2024/1/1 23:45:00, DAY) ยังคงให้ผลลัพธ์เป็น 0 เพราะอยู่ในวันเดียวกัน

สามารถใช้ DATEDIFF กับ calculated column และ measure ได้หรือไม่?

ได้ครับ DATEDIFF ทำงานได้ดีกับทั้ง calculated column และ measure เมื่อใช้กับ calculated column มันจะมี row context ดังนั้นคุณสามารถอ้างอิงคอลัมน์ได้โดยตรง เมื่อใช้กับ measure คุณต้องใช้ CALCULATE เพื่อกำหนด filter context

ถ้า Date1 หรือ Date2 เป็น BLANK() จะเกิดอะไร?

DATEDIFF จะส่งคืน BLANK() ถ้าข้อมูลใดข้อมูลหนึ่งเป็น BLANK() เสมอ ดังนั้นคุณต้องจัดการค่า BLANK() ไว้ล่วงหน้า เช่นใช้ IFERROR หรือ IF เพื่อให้ได้ผลลัพธ์ที่สมเหตุสมผล

ข้อมูล Interval สามารถเป็นตัวแปร (variable) ได้หรือไม่?

ได้ครับ Interval สามารถเป็นตัวแปร (variable) ได้ เช่น VAR MyInterval = “MONTH” จากนั้น DATEDIFF(Date1, Date2, MyInterval) แต่ต้องแน่ใจว่าค่า variable เป็นข้อความที่ถูกต้อง (SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR)

Resources & Related

Additional Notes

DATEDIFF เป็นฟังก์ชันแกนสำคัญของ DAX ที่ช่วยให้คุณวัดระยะเวลาระหว่างวันที่สองวันได้ง่าย ๆ

ที่เจ๋งคือ DATEDIFF นับ “ขอบเขตของช่วงเวลา” ไม่ใช่ “จำนวนช่วงเวลาสมบูรณ์” ตัวอย่างเช่น ถ้าคุณเกิดวันที่ 1 มกราคม 2000 และวันนี้คือ 2 มกราคม 2000 DATEDIFF จะบอกว่าผ่านไป 1 ปี (เพราะข้ามขอบเขตปีของ 2001 แม้ว่าจะผ่านไปแค่ 1 วัน) ส่วน YEARFRAC จะบอกว่าผ่านไปประมาณ 0.003 ปี

ส่วนตัวผม ถ้าจะเก่งการคำนวณเวลาใน DAX ต้องเข้าใจความแตกต่างนี้ให้ลึกซึ้ง เพราะมันจะเปลี่ยนวิธีที่เราดำเนินการบางอย่าง เช่น การคำนวณอายุ การวิเคราะห์ระยะเวลาโครงการ และการรายงาน SLA ต้องใช้ DATEDIFF หรือ YEARFRAC นั้นขึ้นอยู่กับสิ่งที่คุณต้องการเก็บเอาไว้

Leave a Reply

Your email address will not be published. Required fields are marked *