DateTime.From แปลงค่าต่างๆ (Text, Date, Time, Number) ให้เป็นข้อมูลชนิด DateTime ด้วยการระบุค่าและรหัสภาษาทำให้สะดวกในการจัดการข้อมูลวันเวลาจากแหล่งต่างๆ
=DateTime.From(value as any, optional culture as nullable text) as nullable datetime
=DateTime.From(value as any, optional culture as nullable text) as nullable datetime
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| value | any | Yes | ค่าที่ต้องการแปลง สามารถเป็น Text (“2025-12-31 14:30”), Date, Time, Number (OLE Automation Date), หรือ DateTimeZone | |
| culture | text | Optional | – | รหัสภาษา/เขตหนึ่งฯ (culture code) เช่น “en-US” (อังกฤษ-สหรัฐ), “th-TH” (ไทย), “de-DE” (เยอรมัน) ใช้ระบุรูปแบบวันเวลาที่คาดหวัง |
DateTime.From("2025-12-31 14:30:00")=DateTime.From("2025-12-31 14:30:00")
#datetime(2025, 12, 31, 14, 30, 0)
DateTime.From(#date(2025, 1, 1))=DateTime.From(#date(2025, 1, 1))
#datetime(2025, 1, 1, 0, 0, 0)
DateTime.From(#time(6, 45, 12))=DateTime.From(#time(6, 45, 12))
#datetime(1899, 12, 30, 6, 45, 12)
DateTime.From(45291)=DateTime.From(45291)
#datetime(2024, 1, 1, 0, 0, 0)
DateTime.From("31/12/2025 14:30", "th-TH")=DateTime.From("31/12/2025 14:30", "th-TH")
#datetime(2025, 12, 31, 14, 30, 0)
let Source = Table.FromRows({{"2025-12-31 14:30:00"}, {"2025-01-15 09:15:00"}}, {"DateText"}), Converted = Table.AddColumn(Source, "DateTime", each DateTime.Fro…let
Source = Table.FromRows({{"2025-12-31 14:30:00"}, {"2025-01-15 09:15:00"}}, {"DateText"}),
Converted = Table.AddColumn(Source, "DateTime", each DateTime.From([DateText]))
in
Converted
ตารางมี 2 คอลัมน์: DateText (Text) และ DateTime (DateTime type)
DateTime.FromText รับเฉพาะ Text input, DateTime.From รับ Text, Date, Time, Number, DateTimeZone ได้ทั้งหมด คือ DateTime.From ยืดหยุ่นมากกว่า
ผลลัพธ์จะเป็น null ด้วย ถ้าต้องการให้มีค่าเริ่มต้นให้ใช้ ?? operator เช่น DateTime.From([DateColumn]) ?? #datetime(1900, 1, 1, 0, 0, 0)
Power Query จะใช้ culture ของเครื่องที่รันอยู่ (system locale) ถ้าต้องให้ทำงานสอบ ที่ทุกเครื่องเหมือนกันแนะนำให้ระบุ culture เสมอ
ได้ DateTime.From(#datetimezone(2025, 12, 31, 14, 30, 0, 7, 0)) จะแปลงเป็น DateTime เวลาท้องถิ่น (local time)
จะ error: “Expression.Error: Could not convert to DateTime” วิธีแก้ คือ ทำความสะอาด Text ก่อนแปลง เช่น ลบ spaces หรือแปลงรูปแบบ
ฟังก์ชัน DateTime.From ใน Power Query M ใช้สำหรับแปลงค่าต่างๆ ให้เป็นข้อมูลชนิด DateTime (วันที่และเวลา)
เจ๋งตรงที่ DateTime.From รับค่าได้หลายชนิด – ไม่ว่าจะ Text, Date, Time, Number, หรือ DateTimeZone ก็แปลงเป็น DateTime ได้ทั้งหมด ผมชอบใช้ฟังก์ชันนี้เวลามี data source ที่บ้าน เอาวันเวลามาเป็นรูปแบบต่างๆ แล้วต้องแปลงให้เป็นแบบเดียวกัน
ส่วนตัวผม มักใช้กับ culture parameter เพื่อให้ Power Query เข้าใจรูปแบบข้อมูลภาษาต่างๆ เช่น “en-US” หรือ “th-TH” ทำให้แปลงข้อมูลถูกต้อง ขาดไม่ได้เวลาทำงานโปรเจกต์สากล 😎