DATE สร้างค่าวันที่จากตัวเลข Year/Month/Day แล้วคืนค่าเป็นชนิด datetime เหมาะกับการประกอบวันที่จากคอลัมน์แยกส่วนหรือสร้างวันที่อ้างอิง เช่น วันแรกของเดือน วันตัดยอด
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| 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 กุมภาพันธ์ |
DATE ใช้สร้างค่าวันที่จากตัวเลข ปี (Year) เดือน (Month) และวัน (Day) แล้วคืนค่าเป็นชนิดวันที่/เวลา (datetime).
ที่เจ๋งของ DATE คือมันสามารถจัดการ overflow อัตโนมัติ เช่น ถ้าบอกให้สร้างวันที่ “เดือนที่ 14” มันจะหมุนไปปีถัดไปเองโดยไม่ error ซึ่งทำให้สร้างการคำนวณโดยไม่ต้องกังวลเรื่อง edge case
ส่วนตัวผมคิดว่า DATE ถูกใช้บ่อยที่สุดเมื่อมีข้อมูล Year/Month/Day แยกกันในตาราง หรือต้องการสร้างวันที่คงที่สำหรับการเปรียบเทียบ เช่น วันสิ้นปี วันตัดยอด แล้วใช้ร่วมกับ CALENDAR เพื่อสร้าง Date Table 😎
เช่น สร้างวันที่ของวันแรกในเดือนที่ระบุ
เช่น มี Year/Month แยกคอลัมน์ ต้องการสร้างวันที่เพื่อเชื่อมกับตารางวันที่
ใช้สร้างวันอ้างอิงคงที่ เช่น วันตัดยอดปี วันเปิดต้นปี เหมาะสำหรับเปรียบเทียบการณ์ "ก่อน/หลัง" วันที่ระบุ
เมื่อข้อมูลมี Year, Month แยกกัน ใช้ DATE สร้างวันที่จริงเพื่อวิเคราะห์ตามเวลา (time-based analysis) หรือสร้าง Date Dimension
DATE ช่วยกำหนดช่วงวันเริ่มต้นและสิ้นสุดให้ชัดเจน ส่วน CALENDAR จะสร้างแถวสำหรับทุกวันในช่วง
DATE โดยอัตโนมัติหมุนปีเมื่อเดือนเกิน 12 ไม่ต้องใช้ IF เพื่อจัดการพิเศษ
ขอวันที่ 35 กุมภาพันธ์ → DAX เลื่อนไปมีนาคม (Feb มี 28 วัน + 7 = March 7) เหมาะสำหรับคำนวณ "วันต่อจากนี้ไป N วัน"
DAX จัดการ overflow โดยหมุนไปหน่วยที่สูงกว่า เช่น เดือน 13 → เดือน 1 ปีถัดไป, วันที่ 32 มกราคม → 1 กุมภาพันธ์ ซึ่งมีประโยชน์ในการคำนวณตัวอักษรแบบไดนามิก
DATE สร้างวันที่จากตัวเลข Year/Month/Day (ตัวเลข), ส่วน DATEVALUE แปลงข้อความที่เป็นวันที่ให้เป็นชนิด datetime เลือกใช้ตามว่าข้อมูลต้นฉบับเป็นตัวเลขหรือข้อความ
ใช่ DATE รองรับใน DirectQuery สำหรับ measures และ calculated columns ในทุก Power BI, Excel, SSAS Tabular, Azure Analysis Services
DAX จะปัดเศษให้เป็นจำนวนเต็มก่อน ดังนั้น 25.7 ≈ 26 ถ้าหากต้องการความแม่นยำ ควรปัดเศษล่วงหน้าด้วย INT() หรือ ROUND()
ค่า 0 หรือลบจะทำให้เกิด error ในบางกรณี ควรตรวจสอบข้อมูล input ให้ถูกต้องโดยใช้ IF หรือ IFERROR
ฟังก์ชันที่ผู้เขียนโยงไว้กับ DATE จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
CALENDAR ใช้สำหรับสร้างตารางวันที่ครบถ้วนตั้งแต่วันเริ่มต้นถึงวันสิ้นสุดโดยไม่มีช่องว่าง เหมาะสำหรับสร้างตารางวันที่โครงสร้างพื้นฐาน (Date Dimension) ที่ใช้ร่วมกับ Time Intelligence Function
CALENDARAUTO สร้างตารางวันที่อัตโนมัติโดยอิงช่วงวันที่ที่พบในโมเดล และสามารถกำหนดเดือนสิ้นสุดปีบัญชีได้ เหมาะกับการสร้าง Date table แบบเร็ว ๆ แต่ควรระวังค่าวันที่ผิดปกติในข้อมูล
DATEDIFF คำนวณจำนวนช่วงเวลา (วัน, สัปดาห์, เดือน, ปี ฯลฯ) ระหว่างสองวันที่ด้วยการนับจำนวนครั้งที่ข้ามขอบเขตของช่วงเวลา เป็นฟังก์ชันพื้นฐานสำหรับการคำนวณอายุ, ระยะเวลา, และการวิเคราะห์เวลา
DATEVALUE แปลงข้อความวันที่ (text) ให้เป็น datetime โดยอ้างอิงตามการตั้งค่า locale ของ model เหมาะกับข้อมูลวันที่ที่เก็บเป็นข้อความและต้องแปลงเป็นวันที่จริงเพื่อการคำนวณตามเวลา
DAY คืนค่าเลขวันของเดือนจากค่าวันที่/เวลา (1–31) เป็นฟังก์ชันพื้นฐานสำหรับการวิเคราะห์ตามวันของเดือน การจัดกลุ่ม และการสร้างคอลัมน์ช่วย
EDATE รับวันที่เริ่มต้นและจำนวนเดือนที่ต้องการเลื่อนไปข้างหน้า/ย้อนกลับ แล้วคืนวันที่ใหม่ที่รักษาวันเดิม (หรือวันสุดท้ายของเดือนถัดไปถ้าวันเดิมเกิน) เหมาะสำหรับวันครบกำหนดชำระ บันทึกงวด และตารางผ่อน
EDATE คืนค่าวันที่ที่ห่างจากวันเริ่มต้นตามจำนวนเดือนที่ระบุ ใช้สำหรับคำนวณวันครบกำหนด หรือวันกำหนดส่งแบบเดือนปกติ
EOMONTH คืนค่าวันสิ้นเดือนของเดือนที่เลื่อนจาก StartDate ตามจำนวน Months (บวก/ลบได้) เหมาะกับการหาวันปิดงวด วันครบกำหนด และการจัดการช่วงเวลาแบบรายเดือน
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 คืนค่าวันที่ปัจจุบัน (datetime) ตามเวลา UTC ใช้เมื่ออยากได้วันที่มาตรฐานเดียวกันข้ามเขตเวลา และมักใช้คู่กับ TODAY/UTCNOW เพื่อจัดการความต่างของเขตเวลา
WEEKDAY คืนค่าเลขวันในสัปดาห์ (1-7) จากวันที่ที่กำหนด สามารถปรับรูปแบบให้เริ่มจากอาทิตย์หรือจันทร์ได้ตามต้องการ เหมาะสำหรับการแยกวันทำงาน วันหยุด หรือวิเคราะห์พฤติกรรมตามวัน
ดึงปีจากวันที่ในรูปแบบตัวเลข 4 หลัก สำหรับวิเคราะห์ข้อมูลตามปี
YEARFRAC คืนค่าสัดส่วนของปีระหว่าง StartDate และ EndDate โดยเลือกวิธีนับวัน (Basis) ได้ เหมาะกับการวัดช่วงเวลาที่ต้องการผลลัพธ์เป็นจำนวนปีแบบทศนิยม
DATATABLE สร้างตารางแบบ hardcode ด้วยข้อมูลคงที่ โดยระบุชื่อคอลัมน์ ชนิดข้อมูล และค่าของแต่ละแถว เหมาะสำหรับตารางอ้างอิงเล็กๆ เช่น lookup table หรือข้อมูลตัวอย่าง
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่