Thep Excel

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

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

fx
=DATEVALUE(<DateText>)

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

อัปเดต 13 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
DateText Text ข้อความที่เป็นวันที่ เช่น “2025-12-31”, “31/12/2025”, “12/31/2025” ระบบจะตีความตามรูปแบบ locale ของ model

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 😎

How it works

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

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

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

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

Examples

ตัวอย่างที่ 1: แปลงข้อความวันที่แบบคงที่Parsed Date = DATEVALUE("2025-12-31")

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

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

ผลลัพธ์31/12/2025 (datetime type)
ตัวอย่างที่ 2: แปลงคอลัมน์วันที่ที่เป็นข้อความOrder Date (Parsed) = DATEVALUE(Orders[OrderDateText])

เมื่อข้อมูล import มาวันที่อยู่ในคอลัมน์ string เช่น OrderDateText ใช้ DATEVALUE ในคอลัมน์ calculated เพื่อแปลงทุกแถว แล้วตั้งเป็น Foreign Key ไปยัง Date Table

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

ผลลัพธ์ได้คอลัมน์ datetime ที่สามารถใช้ link กับ Date Table
ตัวอย่างที่ 3: ใช้ร่วมกับ DATEDIFF หลังแปลงวันที่Days Between (Parsed) = DATEDIFF( DATEVALUE(Orders[StartDateText]), DATEVALUE(Orders[EndDateText]), DAY )

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

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

ผลลัพธ์จำนวนวันระหว่างวันที่ที่เคยเป็นข้อความ (เช่น 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 อัตโนมัติ

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

ผลลัพธ์วันที่ datetime แต่ละอันแม้รูปแบบไม่ตรงกับ locale
ตัวอย่างที่ 5: ใช้กับ CALCULATE เพื่อกำหนด filter contextSales Until Date = VAR TargetDate = DATEVALUE("2025-12-31") RETURN CALCULATE( SUM(Sales[Amount]), Sales[OrderDate]

แปลงข้อความเป็น datetime แล้วใช้ใน CALCULATE เพื่อ override filter context โดยเปรียบเทียบกับคอลัมน์ OrderDate ที่เป็น datetime จริงแล้ว ซึ่งทำให้สามารถกำหนด cutoff date แบบไดนามิก

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

ผลลัพธ์ยอด Sales สำหรับ orders ที่วันที่ <= 2025-12-31
ตัวอย่างที่ 6: วันที่ที่ละเว้นปีThis Year Date = DATEVALUE("12/25") // ไม่มีปี

ถ้าข้อความไม่มีปี DATEVALUE จะใช้ปีจากนาฬิการะบบของเครื่องปัจจุบัน โดยทั่วไปไม่ต้องใช้แบบนี้เพราะสูตรอาจให้ผลไม่แน่นอนตามเวลา

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

ผลลัพธ์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

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

ฟังก์ชันนี้DATEVALUEDate and Time
Date and Time (7)
CALENDAR

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

DATE

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

DATEDIFF

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

DAY

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

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

WEEKDAY

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

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

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

Text (1)
VALUE

VALUE แปลงข้อความที่แทนตัวเลขให้เป็นตัวเลข (decimal) เหมาะสำหรับข้อมูลนำเข้าที่ตัวเลขถูกเก็บเป็นข้อความหรือข้อมูลที่ไม่ทำความสะอาดอย่างถูกต้อง

Comments

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