EDATE vs EOMONTH: same-day or month-end
Both jump a date by whole months; they differ in where they land. EDATE keeps the day-of-month (the 15th stays the 15th); EOMONTH always lands on the month's LAST day. Between them they express nearly every recurring-date rule.
The differences at a glance
| EDATE | EOMONTH | |
|---|---|---|
| Jan 15 + 1 month | Feb 15 | Feb 28 (end of the target month) |
| Jan 31 + 1 month | Feb 28 (clamps to a valid day) | Feb 28 |
| Preserves | Day of month (when possible) | Nothing — always month-end |
| First-of-month trick | — | EOMONTH(date,-1)+1 = first day of date's month |
| Compatibility | Universal | Universal (both verified in every version of all three apps we test) |
Which should you use?
- EDATE — Anniversary-style recurrence: subscription renewals, monthly due dates, 'same day next quarter' (offset 3), birthdays-by-month.
- EOMONTH — Period boundaries: statement cutoffs, accrual dates, days-in-month (DAY(EOMONTH(d,0))), and — via the -1/+1 idiom — the first of any month.
Compatibility (from executed tests)
Both execute identically in every version of Excel, Google Sheets, and LibreOffice we test, including the Jan-31-plus-a-month clamping behavior. Remember both return date serials — format the cell as a date or the result looks like 46234.
Example formulas
| Renewal same day next month | =EDATE(A2,1) |
| Last day of this month | =EOMONTH(A2,0) |
| First day of this month | =EOMONTH(A2,-1)+1 |
Full per-version details on each function page: EDATE · EOMONTH.