Date and time functions

MONTH

Matches all 10,157 recorded answers

Recorded: 10,153 in the answer bank and 4 workbook cells. How we measure this · See the Rust code

Local names in 40 languages
LanguageName in Excel
ArabicMONTH
BulgarianMONTH
CzechMĚSÍC
DanishMONTH
GermanMONTH
GreekMONTH
English (Australia)MONTH
English (United Kingdom)MONTH
English (United States)MONTH
SpanishMONTH
EstonianKUU
FinnishKUUKAUSI
FrenchMONTH
HebrewMONTH
CroatianMONTH
HungarianMONTH
IndonesianMONTH
ItalianMONTH
JapaneseMONTH
KoreanMONTH
LithuanianMONTH
LatvianMONTH
NorwegianMÅNED
DutchMONTH
PolishMONTH (miesiąc)
Portuguese (Brazil)MONTH
Portuguese (Portugal)MÊS
RomanianMONTH
RussianMONTH
SlovakMESIAC
SlovenianMESEC
Serbian (Latin)MESEC
SwedishMONTH
Thaiเดือน
TurkishAY
UkrainianМІСЯЦЬ
VietnameseMONTH
Chinese (Simplified)MONTH
Chinese (Hong Kong)MONTH
Chinese (Traditional)MONTH

Names from Microsoft's support site.

What it does

MONTH(serial_number)

MONTH projects a date serial onto its month-of-year component: it discards the fractional part, maps ⌊serial⌋ to a calendar day under the workbook's date system (see FUNC.DATE), and returns that day's month as an integer from 1 (January) to 12 (December).

There is no month arithmetic here and no locale sensitivity: the result is a number, never a month name. Producing "January" is the TEXT function's job, and it is locale-dependent where MONTH is not.

Arguments

MONTH(serial_number) — one required argument, the date whose month is wanted.

Microsoft's guidance for the whole category applies: supply the date as a serial — from DATE, from another formula, or from a cell that already holds a date — rather than as text, because text dates depend on the locale's date order and can be misread. Coercion of the argument follows the ordinary scalar rules in coercion and lifting.

Try it

Input cells (optional)

Example: {"B2": 3, "B3": 4}. A1 holds the formula. Other cells need values before a formula can read them.

Enter a formula, then calculate.

Runs locally in your browser with OneCalc. Its answer may differ from Excel. Use English function names and commas between arguments.

Quirks

Result and edge cases

Returns a Number in 1…12.

  • Fractional serials are floored; the time of day is irrelevant.
  • The phantom days. Serial 0 ("0 January 1900") and serial 60 (the non-existent 29 February 1900) both live inside months that do exist, so MONTH returns an unremarkable 1 and 2 respectively under any consistent reading. MONTH is therefore the least diagnostic member of the decomposition trio for the leap-year artefact — but it is also the one whose neighbours reveal it: MONTH(59), MONTH(60) and MONTH(61) should read 2, 2, 3.
  • Out-of-range serials. Negative serials are the documented #NUM! case. The upper end is discussed under "What has not been checked".

Errors

As documented for this category:

  • #NUM! when serial_number is out of range for the workbook's date-base value.
  • #VALUE! when the argument will not convert to a number — the ordinary coercion outcome rather than a rule specific to MONTH.
  • An error argument propagates.

How to implement

Notes for implementers

  1. Floor before mapping, for the same reason as YEAR: truncation and flooring disagree precisely in the region the range check is meant to reject.
  2. Never format inside the kernel. The month number is the value; month names belong to the presentation layer and to TEXT.

Rust code

Show the CalcFunc source of this function

Quoted from the public repository DnaCalc/DnaCalc, crates calc-func and calc-fml, at commit 9e1884369a67. Comments are the source's own. A kernel shared with other functions appears once, on its module page.

MONTH · 3 lines · calc-func/src/catalogue/dates.rs on GitHub
4 month_fn "MONTH" (1, 1) [V "serial_number"] |s, a, sv| {
    of_date(s, a, |x| k::serial_to_ymd(x).map(|(_, m, _)| m as f64))
}

Kernels shared with other functions

Argument and result plumbing

  • num catalogue/kit
  • out catalogue/kit

No implementation has been published with a Handbook test suite for this function.

Version differences

The recorded environments below distinguish a reading from a same-input comparison. Counts describe captured inputs in each environment; overlapping captures and comparisons are not totals of unique worksheet calls.

Excel 16.0 buildPlatform and CPUCaptured inputs
20430Windows, 64-bit, CPU not recorded10,153

The record contains no same-input comparison between these environments. Reading different inputs on different builds does not establish either a version change or cross-build agreement.

Recorded environments and comparison details.

Excel 16.0 build 20430

Windows, 64-bit, CPU not recorded

10,153 captured inputs are indexed for this environment. Capture dates: 2026-09-29 to 2026-09-29. This is a reading count, not a comparison with another build.

Alternatives

Relationships

  • YEAR, DAY — the other two projections; together they invert DATE.
  • EOMONTH — the natural companion when the question is "the end of this month". DATE(YEAR(s), MONTH(s)+1, 0) is the classic hand-rolled equivalent, and relies on DATE's day-0 rollover rather than on MONTH itself.
  • EDATE — month offsetting, which is a different operation from month extraction and is frequently confused with MONTH-based arithmetic. DATE(YEAR(s), MONTH(s)+1, DAY(s)) and EDATE(s,1) are believed to disagree at end-of-month — the former rolls 31 January into 3 March by DATE's documented day carry, while EDATE is generally understood to clamp. EDATE's Microsoft page does not state the clamping rule, and this Handbook has not verified it.
  • DATEDIF with unit "M" — complete months between two dates, which is not a difference of MONTH values.

Named variants

No named variants are recorded yet.

Suggest a correction or contribute an implementation · For agents