Function guides · Date
EDATE function
Returns the date that is a given number of months before or after a start date.
Syntax
=EDATE(start_date, months)
| Argument | What it is |
|---|---|
start_date | The starting date. |
months | Months to move. Positive for the future, negative for the past. |
What EDATE does
EDATE adds or subtracts whole months from a date, keeping the same day number. March 14 plus 12 months is March 14 of the next year.
That is more reliable than adding days. A month is not 30 days, and a year is not always 365. EDATE does the calendar arithmetic and, when the day does not exist in the target month, steps back to the last day of it. It suits contract terms, renewals, warranty periods and any rule stated in months. The result is a date serial number, so apply a date format.
Pair EDATE with other functions to build schedules. A column of payment dates is EDATE of the start date and the row number minus one, filled down. A trial that ends in three months is EDATE(start,3), and the number of days left is that date minus TODAY.
If the rule is “the last day of the month after the term”, use EOMONTH instead. EDATE keeps the day number, so the two answers differ except when the start date is itself a month-end. Reading the rule carefully for “same day” versus “end of month” settles which to use.
EDATE examples
1. A contract renewal date
| A | B | C | |
|---|---|---|---|
| 1 | Start | Term (months) | |
| 2 | 3/14/2026 | 12 | 03/14/2027 |
A 12-month contract starting March 14, 2026 renews on March 14, 2027. EDATE keeps the day number and moves the month, which is what people mean by "one year from the start date".
2. Short months are handled
| A | B | |
|---|---|---|
| 1 | Start | |
| 2 | 1/31/2026 | 02/28/2026 |
A start date of January 31 plus one month would be February 31, which does not exist. EDATE returns the last valid day, February 28, 2026.
3. Going back in time
| A | B | |
|---|---|---|
| 1 | Start | |
| 2 | 9/1/2026 | 03/01/2026 |
A negative number moves backward. A date six months before September 1, 2026 is March 1, 2026. Use it for look-back windows such as "orders in the last 6 months".
Common EDATE mistakes
- Seeing a serial number. EDATE returns a number. Format the cell as a date.
- Using 30 days for a month.
=A2+30is not one month. Months have different lengths. Use EDATE. - Expecting decimals to work. A months value of 1.5 is cut to 1. EDATE works in whole months.
- Confusing it with EOMONTH. EDATE keeps the day. EOMONTH jumps to the month-end.
- Text start dates. Text that Excel cannot read as a date returns #VALUE!.
EDATE on Excel job tests
Anything described in months, such as contract end dates, subscription renewals, warranty expiry and review dates six months after hire, is EDATE. "Calculate the renewal date, 12 months after the start" is one short formula.
Adding 365 or 30 days is the mistake to avoid, since it drifts around leap years and month lengths. After filling down, check a row that starts on the 29th, 30th or 31st to see the short-month behavior, and format the column as dates.
Related functions
EDATE questions
- What does EDATE do?
- It returns the date a set number of months before or after a start date, keeping the day number.
- How do I add one year to a date?
=EDATE(A2,12).- What happens if the day does not exist in the new month?
- EDATE returns the last day of that month.
- Can EDATE subtract months?
- Yes. Use a negative number.
Practice EDATE
Try it in a working grid: the free lesson DATE, YEAR, MONTH and DAY (module 10 of Everyday Excel) has checked EDATE exercises.
Practice this function