Thep Excel

DATEVALUE – แปลงข้อความวันที่เป็นชนิด datetime

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

=DATEVALUE(<DateText>)

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
6/10

Difficulty
3/10

Usefulness
6/10

Syntax & Arguments

=DATEVALUE(<DateText>)

Argument Type Required Default Description
DateText Text Yes ข้อความที่เป็นวันที่ เช่น “2025-12-31”, “31/12/2025”, “12/31/2025” ระบบจะตีความตามรูปแบบ locale ของ model

How it works

แปลงคอลัมน์วันที่ที่เป็นข้อความจากการนำเข้า

เช่น วันที่ถูกนำเข้ามาเป็น string ต้องแปลงเพื่อทำ Time Intelligence

ทำความสะอาดข้อมูลก่อนคำนวณระยะเวลา

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

Examples

ตัวอย่างที่ 1: แปลงข้อความวันที่แบบคงที่
Parsed Date = DATEVALUE("2025-12-31")
แปลงข้อความ "2025-12-31" ให้เป็น datetime type ที่สามารถใช้ในการคำนวณตามเวลาได้ เช่น การเปรียบเทียบวันที่ หรือการคำนวณจำนวนวันระหว่างวันที่
DAX Formula:

Parsed Date =
DATEVALUE("2025-12-31")

Result:

31/12/2025 (datetime type)

ตัวอย่างที่ 2: แปลงคอลัมน์วันที่ที่เป็นข้อความ
Order Date (Parsed) = DATEVALUE(Orders[OrderDateText])
เมื่อข้อมูล import มาวันที่อยู่ในคอลัมน์ string เช่น OrderDateText ใช้ DATEVALUE ในคอลัมน์ calculated เพื่อแปลงทุกแถว แล้วตั้งเป็น Foreign Key ไปยัง Date Table
DAX Formula:

=Order Date (Parsed) =
DATEVALUE(Orders[OrderDateText])

Result:

ได้คอลัมน์ datetime ที่สามารถใช้ link กับ Date Table

ตัวอย่างที่ 3: ใช้ร่วมกับ DATEDIFF หลังแปลงวันที่
Days Between (Parsed) = DATEDIFF( DATEVALUE(Orders[StartDateText]), DATEVALUE(Orders[EndDateText]), DAY )
แปลงวันที่จากข้อความทั้งสองคอลัมน์ก่อน แล้วค่อยใช้ DATEDIFF คำนวณระยะห่างระหว่างสองวันที่ โดยระบุหน่วยเป็น DAY เพื่อให้ได้ผลลัพธ์เป็นจำนวนวัน
DAX Formula:

=Days Between (Parsed) =
DATEDIFF(
    DATEVALUE(Orders[StartDateText]),
    DATEVALUE(Orders[EndDateText]),
    DAY
)

Result:

จำนวนวันระหว่างวันที่ที่เคยเป็นข้อความ (เช่น 10)

ตัวอย่างที่ 4: Fallback behavior – ตีความหลายรูปแบบ
Test Dates = DATEVALUE("5/4/2018") → ถูกตีความ May 4 DATEVALUE("20/4/2018") → ถูกตีความ April 20 (intelligent fallback) DATEVALUE("4-5-2018") → ยอนหนี้ไปใช้รูปแ…
DATEVALUE มีฟังก์ชันการยอนหนี้ที่ฉลาด ถ้ารูปแบบ locale ไม่ตรง มันจะลองวิธีอื่นเอง โดยตัวอย่าง "20/4/2018" ไม่อาจเป็น May 20 (ถ้า M/D/Y locale) เพราะเดือนไม่มี 20 ดังนั้นโปรแกรมจึงตีความให้เป็น April 20 อัตโนมัติ
DAX Formula:

Test Dates =
DATEVALUE("5/4/2018") → ถูกตีความ May 4
DATEVALUE("20/4/2018") → ถูกตีความ April 20 (intelligent fallback)
DATEVALUE("4-5-2018") → ยอนหนี้ไปใช้รูปแบบ M-D-Y ก็ได้

Result:

วันที่ datetime แต่ละอันแม้รูปแบบไม่ตรงกับ locale

ตัวอย่างที่ 5: ใช้กับ CALCULATE เพื่อกำหนด filter context
Sales Until Date = VAR TargetDate = DATEVALUE("2025-12-31") RETURN CALCULATE( SUM(Sales[Amount]), Sales[OrderDate]
แปลงข้อความเป็น datetime แล้วใช้ใน CALCULATE เพื่อ override filter context โดยเปรียบเทียบกับคอลัมน์ OrderDate ที่เป็น datetime จริงแล้ว ซึ่งทำให้สามารถกำหนด cutoff date แบบไดนามิก
DAX Formula:

Sales Until Date =
VAR TargetDate = DATEVALUE("2025-12-31")
RETURN
CALCULATE(
    SUM(Sales[Amount]),
    Sales[OrderDate] <= TargetDate
)

Result:

ยอด Sales สำหรับ orders ที่วันที่ <= 2025-12-31

ตัวอย่างที่ 6: วันที่ที่ละเว้นปี
This Year Date = DATEVALUE("12/25") // ไม่มีปี
ถ้าข้อความไม่มีปี DATEVALUE จะใช้ปีจากนาฬิการะบบของเครื่องปัจจุบัน โดยทั่วไปไม่ต้องใช้แบบนี้เพราะสูตรอาจให้ผลไม่แน่นอนตามเวลา
DAX Formula:

This Year Date =
DATEVALUE("12/25") // ไม่มีปี

Result:

25/12/[Current Year] (system current year)

FAQs

ทำไม DATEVALUE บางครั้งแปลงไม่ได้ หรือแสดง error?

มักเกิดจากข้อความไม่ใช่รูปแบบวันที่ที่ถูกต้อง (เช่น “abc”, “13/32/2025”) หรือรูปแบบไม่สามารถตีความได้แม้ว่า fallback ก็ตาม ควรตรวจสอบข้อมูล input และใช้ IFERROR เพื่อจัดการ error หรือข้อมูลที่ไม่ชัดเจน

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

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

Locale เป็นอะไร และมีผลต่อ DATEVALUE อย่างไร?

Locale คือการตั้งค่าภูมิศาสตร์/ภาษาของ model เช่น en-US (M/D/Y), en-GB (D/M/Y), th-TH เป็นต้น DATEVALUE ใช้ locale นี้เพื่อตีความรูปแบบวันที่ “1/2/2025” อาจเป็น January 2 หรือ February 1 ขึ้นอยู่ locale ดังนั้นถ้าข้อมูลมาจากนอกประเทศต้องระวัง

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

DATEVALUE แปลงข้อความเป็นวันที่ส่วน TIMEVALUE แปลงข้อความเป็นเวลา (time only) ถ้าต้องการ timestamp เต็มควรใช้ DATEVALUE

ถ้า DateText มีเวลาด้วยเช่น "2025-12-31 14:30:00" จะเป็นอย่างไร?

DATEVALUE จะเพิกเฉยต่อส่วนเวลา ดังนั้น “2025-12-31 14:30:00” จะแปลงเป็น 31/12/2025 (เลิกไปส่วน 14:30:00) ถ้าต้องเวลาด้วยต้องใช้ DATETIMEVALUE หรือ TIMEVALUE แยกต่างหาก

สามารถใช้ Literal date syntax แทน DATEVALUE ได้ไหม?

ใช่ DAX รองรับ literal date syntax เช่น dt”2025-12-31″ ซึ่งชัดเจนกว่าและไม่ต้องใช้ DATEVALUE สำหรับวันที่คงที่ แต่สำหรับข้อมูลจากคอลัมน์ยังต้องใช้ DATEVALUE

DATEVALUE รองรับ DirectQuery ไหม?

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

Resources & Related

Additional Notes

DATEVALUE ใช้แปลงข้อความที่เป็นวันที่ (text string) ให้เป็นค่า datetime ที่สามารถนำไปใช้ในการคำนวณตามเวลา

ที่เจ๋งของ DATEVALUE คือมันมีฟังก์ชันการยอนหนี้อัจฉริยะ (intelligent fallback) – ถ้าตีความวันที่ตามรูปแบบ locale ไม่สำเร็จ มันจะลองตีความในรูปแบบอื่นเองโดยไม่ error ทำให้ข้อมูลที่ “ไม่บริสุทธิ์” ยังสามารถแปลงได้ สำคัญอย่างไร คือ DATEVALUE มี locale-dependent behavior – “1/8/2009” อาจเป็น January 8 หรือ August 1 ขึ้นอยู่ว่า model ตั้งค่า M/D/Y (US) หรือ D/M/Y (EU)

ส่วนตัวผมคิดว่า DATEVALUE มีประโยชน์สุดเมื่อ import ข้อมูลจากระบบอื่น (CSV, Excel, API) ที่วันที่ถูกเก็บเป็นข้อความ แล้วต้องการให้สามารถคำนวณตามเวลาได้ หรือสร้าง relationship กับ Date Table โดยไม่ต้องไปแก้ไขที่ source 😎

Leave a Reply

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