ดึงเฉพาะส่วนวันที่ (Date) ออกจากค่า DateTime หรือ DateTimeZone โดยทิ้งเวลาไป
=DateTime.Date(dateTime as any) as nullable date
=DateTime.Date(dateTime as any) as nullable date
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| dateTime | DateTime/DateTimeZone/Date | Yes | ค่า DateTime, DateTimeZone หรือ Date ที่ต้องการดึงส่วนวันที่ออกมา |
let SampleDateTime = #datetime(2025, 5, 20, 14, 30, 45), ExtractedDate = DateTime.Date(SampleDateTime) in ExtractedDatelet
SampleDateTime = #datetime(2025, 5, 20, 14, 30, 45),
ExtractedDate = DateTime.Date(SampleDateTime)
in
ExtractedDate
#date(2025, 5, 20)
let TimezoneValue = #datetimezone(2025, 12, 31, 23, 59, 59, 8, 0), DateOnly = DateTime.Date(TimezoneValue) in DateOnlylet
TimezoneValue = #datetimezone(2025, 12, 31, 23, 59, 59, 8, 0),
DateOnly = DateTime.Date(TimezoneValue)
in
DateOnly
#date(2025, 12, 31)
let SalesData = Table.FromRows( {{#datetime(2025, 1, 15, 9, 30, 0), 500}, {#datetime(2025, 1, 15, 14, 45, 0), 750}, {#datetime(2025, 1, 16, 10, 20, 0), 600}}, {…let
SalesData = Table.FromRows(
{{#datetime(2025, 1, 15, 9, 30, 0), 500}, {#datetime(2025, 1, 15, 14, 45, 0), 750}, {#datetime(2025, 1, 16, 10, 20, 0), 600}},
{"OrderDateTime", "Amount"}
),
ConvertToDate = Table.TransformColumns(SalesData, {"OrderDateTime", each DateTime.Date(_)})
in
ConvertToDate
ตารางที่มี OrderDateTime เป็น Date แทน DateTime โดยยังคงค่า Amount ไว้เหมือนเดิม
let TransactionLog = Table.FromRows( {{#datetime(2025, 3, 1, 8, 15, 0), "Sale", 1200}, {#datetime(2025, 3, 1, 15, 45, 0), "Return", 300}, {#datetime(2025, 3, 2,…let
TransactionLog = Table.FromRows(
{{#datetime(2025, 3, 1, 8, 15, 0), "Sale", 1200}, {#datetime(2025, 3, 1, 15, 45, 0), "Return", 300}, {#datetime(2025, 3, 2, 10, 0, 0), "Sale", 1500}},
{"Timestamp", "Type", "Amount"}
),
AddDateColumn = Table.AddColumn(TransactionLog, "Date", each DateTime.Date([Timestamp])),
GroupByDate = Table.Group(AddDateColumn, {"Date"}, {{"TotalAmount", each List.Sum([Amount]), "Count", each Table.RowCount(_)}})
in
GroupByDate
ตารางแสดง Date, TotalAmount และ Count โดยจัดกลุ่มตามวันที่
DateTime.Date ใช้สำหรับดึงส่วน Date จาก DateTime/DateTimeZone ส่วน Date.From เป็นฟังก์ชันแปลงประเภท (type conversion) ที่พยายามแปลง text หรือค่าอื่นๆ เป็น Date DateTime.Date ใช้ดีเมื่อข้อมูลเป็น DateTime อยู่แล้ว
DateTime.Date จะส่งคืน null นี่คือพฤติกรรมของฟังก์ชัน nullable ใน Power Query ถ้าต้องการจัดการ null ให้ใช้ Table.ReplaceValue หรือ if statement ในคำสั่ง each
ได้ ถ้าส่ง Date เข้าไป DateTime.Date จะคืน Date นั้นกลับมาเหมือนเดิม ไม่มีปัญหา
ไม่หายไป มันถูกแสดงออกมาเป็นส่วนหนึ่งของค่า DateTime เท่านั้น DateTime.Date แสดงแค่ส่วน Date ส่วนเวลายังอยู่ในค่า DateTime ดั้งเดิม ถ้าต้องดึงเวลาออกมาให้ใช้ DateTime.Time แทน
DateTime.Date เป็นฟังก์ชันที่ช่วยดึงเฉพาะส่วนวันที่ออกจากค่า DateTime หรือ DateTimeZone ให้ติดเหนี่ยว ใช้ดีเมื่อเราได้ค่า DateTime แบบเต็มตัว แต่ต้องการแค่วันที่โดยไม่มีเวลา
ที่เจ๋งคือ DateTime.Date ทำให้เราสามารถแยกข้อมูลออกมาเป็นส่วนๆ ได้ง่าย ไม่ว่าจะเป็นข้อมูล DateTime ที่มีเวลาที่แตกต่างกัน ทั้งหมดจะกลายเป็น Date ที่ง่ายต่อการจัดกลุ่มหรือเปรียบเทียบ
ส่วนตัวผม ใช้ DateTime.Date คู่กับ Table.TransformColumns เมื่อต้องการแปลงคอลัมน์ DateTime ทั้งหมดเป็น Date พอแล้วเวลาของมันหมดไป ข้อมูลจึงเหมาะสำหรับการ group by ตามวันที่มากขึ้น 😎