---
title: Date.DayOfWeekName – ดึงชื่อวันในสัปดาห์
url: https://www.thepexcel.com/functions/power-query/date-functions/date-dayofweekname/
type: function-explainer
program: Power Query
syntax: "Date.DayOfWeekName(date as any, optional culture as nullable text) as nullable text"
date: 2025-12-12
updated: 2025-12-25
scores:
  popularity: 6
  difficulty: 3
  usefulness: 6
---

# Date.DayOfWeekName – ดึงชื่อวันในสัปดาห์

> Date.DayOfWeekName คืนค่าชื่อวันในสัปดาห์เป็นข้อความ เหมาะสำหรับแสดงวันจากวันที่ในรูปแบบ Monday, Tue

## คำอธิบาย

Date.DayOfWeekName คืนค่าชื่อวันในสัปดาห์เป็นข้อความ เหมาะสำหรับแสดงวันจากวันที่ในรูปแบบ Monday, Tuesday เป็นต้น สามารถกำหนด culture เพื่อแปลชื่อวันเป็นภาษาต่างๆ ได้

## Syntax

```excel
Date.DayOfWeekName(date as any, optional culture as nullable text) as nullable text
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| date | Yes | date |  | วันที่ที่ต้องการดึงชื่อวันในสัปดาห์ สามารถเป็น #date(year, month, day) หรือ datetime value |
| culture | No | text |  | Culture code สำหรับกำหนดภาษาของชื่อวัน เช่น "en-US", "th-TH", "de-DE" ถ้าไม่ระบุจะใช้ culture ตามค่า default |

## เคสการใช้งาน

### สร้างรายงานวันทำการ

เพิ่มคอลัมน์ชื่อวันเพื่อแสดงสำหรับแต่ละวันที่ในรายงาน

_เหมาะกับ:_ report-formatting

### กรองข้อมูลตามวัน

ใช้ชื่อวันเพื่อกรองข้อมูลสำหรับวันจันทร์-ศุกร์

_เหมาะกับ:_ data-filtering

### จัดเรียงข้อมูลตามแบบแผน

เพิ่มคอลัมน์ชื่อวันเพื่อจัดเรียงข้อมูลตามรูปแบบการทำงาน

_เหมาะกับ:_ data-sorting

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: ดึงชื่อวันง่ายๆ

```excel
Date.DayOfWeekName(#date(2025, 1, 15))
```

**ผลลัพธ์:** `"Wednesday"`

วันที่ 15 มกราคม 2025 เป็นวันพุธ ฟังก์ชันจะคืนค่า "Wednesday" เป็นข้อความ (ตามค่า culture ตั้งต้น)

### 2. ตัวอย่างที่ 2: ระบุ culture เป็นไทย

```excel
Date.DayOfWeekName(#date(2025, 1, 15), "th-TH")
```

**ผลลัพธ์:** `"พุธ"`

เมื่อระบุ culture = "th-TH" ฟังก์ชันจะแปลชื่อวันเป็นภาษาไทย ได้เป็น "พุธ" แทน "Wednesday"

### 3. ตัวอย่างที่ 3: เพิ่มคอลัมน์ชื่อวันในตาราง

```excel
let
    Source = Table.FromRows({{#date(2025,1,13), "A"}, {#date(2025,1,14), "B"}}, {"Date", "Item"}),
    AddDay = Table.AddColumn(Source, "DayName", each Date.DayOfWeekName([Date], "en-US"))
in
    AddDay
```

**ผลลัพธ์:** `ตารางที่เพิ่มคอลัมน์ DayName = "Monday", "Tuesday"`

สูตรนี้ใช้ let...in structure เพื่อสร้างตารางจาก rows แล้วเพิ่มคอลัมน์ DayName โดยใช้ Date.DayOfWeekName ร่วมกับ each เพื่อใช้กับทุกแถว

### 4. ตัวอย่างที่ 4: สร้าง pivot report ตามวัน

```excel
let
    Source = Table.FromRows({{#date(2025,1,13), 1000}, {#date(2025,1,14), 2000}, {#date(2025,1,15), 1500}}, {"Date", "Amount"}),
    AddDayName = Table.AddColumn(Source, "Day", each Date.DayOfWeekName([Date], "th-TH")),
    Grouped = Table.Group(AddDayName, {"Day"}, {{"TotalAmount", each List.Sum([Amount]), type number}})
in
    Grouped
```

**ผลลัพธ์:** `ตารางที่มีแถวสำหรับแต่ละวัน (จันทร์, อังคาร, พุธ) พร้อมยอดรวม`

ตัวอย่างจริงที่ใช้ Date.DayOfWeekName เพื่อแปลวันเป็นภาษาไทย แล้ว group ข้อมูลตามวันเพื่อคำนวณยอดรวมต่อวัน ทำให้รายงานอ่านเข้าใจง่ายขึ้น

## หมายเหตุเพิ่มเติม

- ผมแนะนำให้ระบุ culture อย่างชัดเจนเสมอ เพื่อหลีกเลี่ยงปัญหาผลลัพธ์ที่ไม่คาดคิด ถ้า culture ที่ระบุไม่รองรับ Power Query จะใช้ culture ที่ใกล้เคียงที่สุด

- ส่วนตัวผมใช้ Date.DayOfWeekName เมื่อสร้างรายงานที่มนุษย์อ่าน แต่เมื่อต้องเปรียบเทียบหรือตรรกะภายในโค้ด ผมจะใช้ Date.DayOfWeek (ตัวเลข) เพื่อความ performance ที่ดีขึ้น

- ถ้าต้องการตัวอักษรตัวพิมพ์เล็ก (lowercase) สามารถใช้ Text.Lower() ห่อฟังก์ชัน เช่น Text.Lower(Date.DayOfWeekName(date))

## คำถามที่พบบ่อย

**Q: ความแตกต่างระหว่าง Date.DayOfWeekName กับ Date.DayOfWeek คืออะไร?**

ผม Date.DayOfWeekName คืนค่าชื่อวัน ("Monday", "Tuesday") ส่วน Date.DayOfWeek คืนค่าเป็นตัวเลข (0-6) ฟังก์ชัน DayOfWeekName เหมาะสำหรับแสดงผลให้ผู้ใช้อ่าน DayOfWeek เหมาะสำหรับการเปรียบเทียบหรือตรรกะภายในโค้ด

**Q: ผลลัพธ์จะเป็นภาษาใด ถ้าไม่ระบุ culture?**

ผมกล่าว ถ้าไม่ระบุ parameter culture ฟังก์ชันจะใช้ culture ของระบบ โดยทั่วไปจะเป็นภาษาอังกฤษ ("Monday") แต่ถ้าต้องการให้ชัวร์ว่าจะได้ผลลัพธ์ตามต้องการ ให้ระบุ culture อย่างชัดเจน เช่น "th-TH" หรือ "en-US"

**Q: สามารถใช้ Date.DayOfWeekName กับการกรองข้อมูลได้หรือไม่?**

ผมแนะนำให้ใช้ Date.DayOfWeek (ตัวเลข) สำหรับการกรองแทน เพราะการเปรียบเทียบตัวเลขเร็วกว่า และหลีกเลี่ยงปัญหา locale ไม่ตรงกัน แต่ถ้าจำเป็นต้องใช้ชื่อวัน สามารถใช้ได้ เช่น Table.SelectRows(Source, each Date.DayOfWeekName([Date], "en-US") = "Monday")

## ฟังก์ชันที่เกี่ยวข้อง

- [Date.DayOfWeek – คืนค่าตัวเลขลำดับวันในสัปดาห์](https://www.thepexcel.com/functions/power-query/date-functions/date-dayofweek/)
- [Date.DayOfYear – หาลำดับวันในหนึ่งปี](https://www.thepexcel.com/functions/power-query/date-functions/date-dayofyear/)
- [Date.Day – ดึงค่าวันที่ (1-31) จากข้อมูลวันที่](https://www.thepexcel.com/functions/power-query/date-functions/date-day/)
- [Text.Lower – แปลงข้อความเป็นตัวพิมพ์เล็ก](https://www.thepexcel.com/functions/power-query/text-functions/text-lower/)

## แหล่งข้อมูลเพิ่มเติม

- [Microsoft Learn: Date.DayOfWeekName](https://learn.microsoft.com/en-us/powerquery-m/date-dayofweekname) _(official)_
- [Power Query M Function Reference](https://learn.microsoft.com/en-us/powerquery-m/power-query-m-function-reference) _(official)_

---

_Source: [https://www.thepexcel.com/functions/power-query/date-functions/date-dayofweekname/](https://www.thepexcel.com/functions/power-query/date-functions/date-dayofweekname/)_
