Date.MonthName Function (Power Query M)

Date.MonthName returns the full name of the month from a date, like October or January. Available in Excel (Power Query), Power BI Desktop, and Power BI Service.

If you want to turn a date column into readable month names for a report or summary, this is the function to use.

Syntax of Date.MonthName Function

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

where

  • date (required, any). The date to get the month name from. The type is any, so you can pass a date, datetime, or datetimezone value directly.
  • culture (optional, nullable text). A culture code that sets the output language, for example "en-US" or "it-IT". When omitted, the current system culture is used.

Returns: the full month name as nullable text, for example October. If date is null, it returns null with no error.

In plain terms, you give it a date and it hands back the month spelled out as text.

Example 1: Get the month name from a date

The simplest call. Pass a date and nothing else.

let
Source = Date.MonthName(#date(2025,10,8))
in
Source

Result: October

The date is October 8, 2025, so the function returns October. The day and year make no difference here, only the month matters.

Example 2: Return the month name in another language

Pass a culture code as the second argument to control the output language. Here is the same date in Italian.

let
Source = Date.MonthName(#date(2025,10,8),"it-IT")
in
Source

Result: ottobre

Note the lowercase o. Italian does not capitalize month names, and the function follows the spelling rules of the culture you pass.

Example 3: Use a datetime value directly

Because date is typed as any, a datetime value works without converting it first.

let
Source = Date.MonthName(#datetime(2026,1,23,18,45,0))
in
Source

Result: January

The time portion is ignored. A datetimezone value works the same way, so you don’t need to strip anything off first.

Example 4: Add a month name column to a table

Say you have a ServiceLog query that tracks machine maintenance, and you want a readable month column for a summary.

Here is the starting data:

MachineServiceDateTechnician
Press Brake 22026-01-19R. Vance
CNC Router2026-04-27L. Ortiz
Laser Cutter2026-04-30R. Vance
Packaging Line2026-09-15M. Chen

Now add the column with Table.AddColumn:

let
Source = Excel.CurrentWorkbook(){[Name="ServiceLog"]}[Content],
#"Added Month" = Table.AddColumn(Source,"Service Month",each Date.MonthName([ServiceDate])),
Result = Table.SelectColumns(#"Added Month",{"Machine","Service Month"})
in
Result

This runs Date.MonthName on each ServiceDate, then keeps only the two columns the summary needs.

The result has one month name per machine:

MachineService Month
Press Brake 2January
CNC RouterApril
Laser CutterApril
Packaging LineSeptember

The two April services land in the same bucket, which is exactly what you want when you group or report by month.

Things to keep in mind with Date.MonthName

  • The output language depends on the machine running the query. With no culture, the same query can return March on one PC and März on another. Pass a culture when a report must refresh the same everywhere. Examples 1 and 3 assume an English locale.
  • Month names sort alphabetically, not chronologically. April lands before January. Sort on a numeric month column instead, then remove it once the rows are in order.
  • A text value throws an error, even though date is typed any. Date.MonthName("2026-01-23") fails with Expression.Error: We cannot convert the value "2026-01-23" to type Date. Convert it first with Date.FromText, or set a whole text column to the Date type with Table.TransformColumnTypes.
  • Capitalization comes from the culture, not the function. Lowercase results like ottobre in Example 2 are correct. Italian and Dutch lowercase their month names, German capitalizes them.

Common questions about Date.MonthName

Can Date.MonthName return an abbreviated month name like Jan?

No, it always returns the full name. For abbreviations, format the date with Date.ToText instead, using the "MMM" format code.

How do I get the month number instead of the name?

Use Date.Month. It returns the month as a number from 1 to 12, which also gives you the column you need for chronological sorting.

How do I get the current month’s name?

Pass the current time from DateTime.LocalNow straight in: Date.MonthName(DateTime.LocalNow()).

List of All Power Query Functions

Related Power Query Functions / Articles:

I am a huge fan of Microsoft Excel and love sharing my knowledge through articles and tutorials. I work as a business analyst and use Microsoft Excel extensively in my daily tasks. My aim is to help you unleash the full potential of Excel and become a data-slaying wizard yourself.