---
title: Date.MonthName – แยกชื่อเดือนจากวันที่
url: https://www.thepexcel.com/functions/power-query/date-functions/date-monthname/
type: function-explainer
program: Power Query
syntax: "Date.MonthName(date as any, optional culture as nullable text) as nullable text"
date: 2025-12-12
updated: 2025-12-25
scores:
  popularity: 7
  difficulty: 2
  usefulness: 7
---

# Date.MonthName – แยกชื่อเดือนจากวันที่

> Date.MonthName ใช้สำหรับแยกชื่อเดือนภาษาอังกฤษจากค่าวันที่ที่ระบุ โดยส่วนใหญ่ใช้เมื่อต้องการแสดงชื่อ

## คำอธิบาย

Date.MonthName ใช้สำหรับแยกชื่อเดือนภาษาอังกฤษจากค่าวันที่ที่ระบุ โดยส่วนใหญ่ใช้เมื่อต้องการแสดงชื่อเดือนแทนเลขเดือน

## Syntax

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

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| date | Yes | Date/DateTime |  | ค่าวันที่ที่ต้องการแยกชื่อเดือน |
| culture | No | Text |  | รหัสวัฒนธรรมที่กำหนดภาษาชื่อเดือน เช่น "en-US" สำหรับภาษาอังกฤษ หรือ "th-TH" สำหรับภาษาไทย (ถ้าไม่ระบุ ใช้ค่าเริ่มต้นของระบบ) |

## ตัวอย่าง

### 1. ตัวอย่างพื้นฐาน: ดึงชื่อเดือนจากวันที่

```excel
let
    MyDate = #date(2024, 12, 15),
    MonthName = Date.MonthName(MyDate)
in
    MonthName
```

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

ฟังก์ชันดึงชื่อเดือนจากวันที่ 2024-12-15 ผลลัพธ์คือ "December"

### 2. ตัวอย่างที่ 2: ระบุวัฒนธรรม (Culture)

```excel
let
    MyDateTime = #datetime(2024, 3, 20, 14, 30, 0),
    MonthName = Date.MonthName(MyDateTime, "en-US")
in
    MonthName
```

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

ดึงชื่อเดือนจากวันที่และเวลา โดยระบุวัฒนธรรม en-US ผลลัพธ์คือ "March"

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

```excel
let
    Sales = Table.FromRows(
        {{#date(2024, 1, 15), "Product A", 500}, {#date(2024, 2, 20), "Product B", 750}, {#date(2024, 3, 10), "Product C", 600}},
        {"Date", "Product", "Amount"}
    ),
    AddMonthName = Table.AddColumn(Sales, "MonthName", each Date.MonthName([Date], "en-US"))
in
    AddMonthName
```

**ผลลัพธ์:** `ตารางมี 4 คอลัมน์: Date, Product, Amount, MonthName (ค่าเดือน: January, February, March)`

เพิ่มคอลัมน์ใหม่ที่มีชื่อเดือนโดยใช้ Date.MonthName ทำให้รายงานอ่านง่ายขึ้น

### 4. ตัวอย่างที่ 4: เพิ่มทั้ง MonthName และ MonthNumber เพื่อให้สามารถเรียงได้ถูกต้อง

```excel
let
    Sales = Table.FromRows(
        {{#date(2024, 12, 15), "Dec", 500}, {#date(2024, 1, 20), "Jan", 750}, {#date(2024, 3, 10), "Mar", 600}},
        {"Date", "Product", "Amount"}
    ),
    AddMonthInfo = Table.AddColumn(Sales, "MonthName", each Date.MonthName([Date], "en-US")),
    AddMonthNum = Table.AddColumn(AddMonthInfo, "MonthNum", each Date.Month([Date])),
    SortByMonth = Table.Sort(AddMonthNum, {{"MonthNum", Order.Ascending}})
in
    SortByMonth
```

**ผลลัพธ์:** `ตารางเรียงตามลำดับเดือนจริง (January, March, December) ไม่ใช่เรียง Alphabetical`

เมื่อต้องการเรียงข้อมูลตามลำดับเดือน ต้องเก็บทั้ง MonthName (สำหรับแสดง) และ MonthNum (สำหรับเรียง) ถ้าใช้แค่ MonthName จะเรียง Alphabetical ซึ่งผิด

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

- ผมแนะนำให้ใช้ "en-US" เมื่อส่งไปให้คนอื่น เพราะรับประกันว่า December จะขึ้นเสมอ ไม่มีปัญหาเรื่อง culture

- ใช้ร่วมกับ Table.AddColumn แบบนี้: Table.AddColumn(SourceTable, "MonthName", each Date.MonthName([Date], "en-US")) ใช้ได้ดีมาก

- ผมเคยรวมกับ Table.Group เพื่อจัดกลุ่มข้อมูลตามชื่อเดือน แต่ต้องระวังว่าเดือนแบบ text จะเรียงก alphabetical ไม่ใช่ month order

- หากต้องการตัวเลขเดือนเพื่อทำการคำนวณ ให้ใช้ Date.Month() ถ้าต้องชื่อเดือนให้แสดง ใช้ Date.MonthName()

- ส่วนตัวผม จะใช้ Date.MonthName สำหรับ UI/Report แต่ Date.Month สำหรับ logic และ grouping ชีวิตจะมีสุข

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

**Q: Date.MonthName ทำงานกับวันที่รูปแบบใดได้บ้าง?**

ใช้ได้กับ #date, #datetime และ Date/DateTime values ที่เป็นข้อมูลชนิด date หรือ datetime

**Q: ถ้าไม่ระบุ culture พารามิเตอร์จะใช้ค่าใด?**

จะใช้ค่าเริ่มต้นของระบบ (system default culture) ซึ่งโดยปกติขึ้นอยู่กับการตั้งค่าภาษาของคอมพิวเตอร์

**Q: สามารถใช้ Date.MonthName เพื่อแสดงชื่อเดือนภาษาไทยได้หรือ?**

ได้ โดยระบุ culture เป็น "th-TH" เช่น Date.MonthName(#date(2024, 1, 15), "th-TH") แต่ผลลัพธ์อาจขึ้นอยู่กับการสนับสนุน culture ของ Power Query

**Q: ถ้าเป็น null value จะคืนค่าอะไร?**

จะคืนค่า null หากค่า date ที่ส่งเข้าไป (argument) เป็น null

**Q: ชื่อเดือนที่ได้มาจาก Date.MonthName จะเรียงตามลำดับเดือนหรือ Alphabetical?**

ผมต้องบอกว่า Date.MonthName ส่งคืน text เพียงชื่อ เมื่อนำไปแสดงในรายงาน Excel หรือ GROUP BY จะเรียงก alphabetical อย่าง April, August, December... ไม่ใช่ January, February, March ถ้าต้องการเรียงตามเดือน ให้เก็บ Date.Month() เป็นคอลัมน์แยก แล้ว sort โดยคอลัมน์นั้นแทน

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

- [Microsoft Learn: Date.MonthName](https://learn.microsoft.com/en-us/powerquery-m/date-monthname) _(official)_
- [Power Query M Function Reference - Date Functions](https://learn.microsoft.com/en-us/powerquery-m/date-functions) _(official)_

---

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