Start free
Date & time

EDATE function

EDATE moves a date by a whole number of months and keeps its day of the month: =EDATE(A2,3) is three months after A2. When the new month is too short for that day, you get its last day.

Available in Excel 2007 and later, Excel for the web and Google Sheets

Key takeaways

  • =EDATE(start_date, months) moves a date that many months on, or back with a negative number, and keeps its day of the month when the new month has that day.
  • A day the new month doesn't have becomes its last day: 31 January plus one month is 28 February, or 29 February in a leap year.
  • For years, multiply by 12: =EDATE(A2,B2*12).
  • Format the result as a date, or it shows as a serial number.
On this page

EDATE syntax

=EDATE(start_date, months)
ArgumentRequiredWhat it means
start_dateYesThe date to start from: a cell holding a date, or DATE(2026,1,15). Text that isn't a date gives #VALUE!.
monthsYesHow many months to move: positive goes forward, negative goes back. A decimal part is dropped.

Examples

When a contract ends

Twelve months after 15 January 2026 is 15 January 2027.

C2=EDATE(A2,B2)
RowABC
1StartMonthsEnds
215 Jan 20261215 Jan 2027
=EDATE(A2,B2) → 15 Jan 2027

Count back from a date

A negative number goes back: notice is due two months before the renewal date.

B2=EDATE(A2,-2)
RowAB
1RenewalNotice from
230 Sept 202630 Jul 2026
=EDATE(A2,-2) → 30 Jul 2026

The 31st of a short month

February 2026 has no 31st, so EDATE returns its last day, 28 February. Adding 31 days instead would land in March.

B2=EDATE(A2,1)
RowAB
1StartOne month on
231 Jan 202628 Feb 2026
=EDATE(A2,1) → 28 Feb 2026

The day before a date months away

Six months from 1 April is 1 October, so a probation that starts on 1 April ends the day before, on 30 September.

B2=EDATE(A2,6)-1
RowAB
1StartsProbation ends
21 Apr 202630 Sept 2026
=EDATE(A2,6)-1 → 30 Sept 2026

Practise it

New data, so you can't copy the answer above. We check the number your formula returns, then change the data to make sure it still holds.

Your task: In C2, return the day the warranty expires: the purchase date in A2 plus the number of years in B2.

Graded live
RowABC
1BoughtYearsExpires
214 Mar 20262

Write the formula in the bar above, then press Check or Enter.

Hint

EDATE takes the date and a number of months: A2, and B2 years times 12.

Solution

=EDATE(A2,B2*12) Any formula that returns the same result passes.

Common mistakes

  1. Giving years instead of months. =EDATE(A2,2) is two months on, not two years. Multiply years by 12.
  2. Adding 30 days for a month. Months have 28 to 31 days, so +30 drifts away from the day you started on. EDATE keeps the day of the month, or gives the last day of a month too short for it.
  3. Expecting it to keep month ends. EDATE keeps the day, not the month end: =EDATE(DATE(2026,2,28),1) is 28 March, not 31 March. For month ends, use EOMONTH.
  4. A result that shows as a number. EDATE returns a serial number. Format the cell as a date.

FAQ

What's the difference between EDATE and EOMONTH?

EDATE keeps the day of the month when it can: 15 March becomes 15 April, and 31 March becomes 30 April. EOMONTH always returns the last day of the month it lands in: 15 March becomes 30 April.

Can EDATE subtract months?

Yes. A negative number of months goes back: =EDATE(A2,-6) is six months before A2.

How do I add years to a date?

=EDATE(A2,B2*12) with the years in B2, or =DATE(YEAR(A2)+B2,MONTH(A2),DAY(A2)). For whole years they differ only on 29 February: EDATE gives 28 February in a year without one, while DATE runs on to 1 March.

Know EDATE? Prove it on a real sheet.

Practise EDATE and the functions around it in a live grid that grades your result and explains your mistakes.

Runs in your browser · Graded on your result · No install