Beginner 7 min read

EDATE and EOMONTH Functions in Google Sheets

Learn how to use EDATE and EOMONTH in Google Sheets to add months to a date, find end-of-month dates, and build billing and review schedules.

SB

Sheets Bootcamp

April 15, 2026

EDATE in Google Sheets adds or subtracts a specific number of months from a date, and EOMONTH returns the last day of a month offset by a given number of months. Both belong to the date functions family and solve problems that basic date arithmetic cannot: adding months correctly regardless of how many days each month has.

This guide covers the syntax for both functions, step-by-step examples using an employee database, and practical patterns for billing cycles, probation periods, and quarterly reporting.

In This Guide

EDATE Syntax

EDATE returns a date that is a specified number of months before or after a start date.

Formula
=EDATE(start_date, months)
ParameterDescriptionRequired
start_dateThe date to start fromYes
monthsNumber of months to add (positive) or subtract (negative)Yes

=EDATE(D2, 6) adds 6 months. =EDATE(D2, -3) subtracts 3 months.

Important

EDATE preserves the day of the month when possible. If the target month has fewer days, EDATE returns the last day of that month. =EDATE("1/31/2026", 1) returns 2/28/2026, not March 3. It never overflows into the next month.

EOMONTH Syntax

EOMONTH returns the last day of a month that is a specified number of months before or after a start date.

Formula
=EOMONTH(start_date, months)
ParameterDescriptionRequired
start_dateThe date to start fromYes
monthsNumber of months to offset. Use 0 for the same month.Yes

=EOMONTH(D2, 0) returns the last day of the same month as the date in D2. =EOMONTH(D2, 1) returns the last day of the following month. The day of the start date does not matter — EOMONTH only considers the month and year.

How to Use EDATE and EOMONTH: Step-by-Step

We’ll use an employee database with 8 employees. The table has Name in column A, Employee ID in column B, Department in column C, Hire Date in column D, and Birthdate in column E.

Sample Data

The employee database includes Harry Potter (hired 8/1/2018), Hermione Granger (hired 9/1/2017), Ron Weasley (hired 8/1/2018), and 5 more employees across departments.

Employee database with Name, Department, Hire Date, and Salary columns for 8 employees

1

Review your employee data

Open the spreadsheet with employee records. Column D contains Hire Dates ranging from 9/1/2017 (Hermione Granger) to 3/22/2021 (Luna Lovegood). You’ll use these dates to calculate review dates, end-of-month dates, and quarterly deadlines.

2

Calculate a 6-month review date with EDATE

Select cell F2 and enter:

Formula
=EDATE(D2, 6)

For Harry Potter’s hire date of 8/1/2018, this returns 2/1/2019 — exactly 6 months later, same day of the month. Copy the formula down to F9 to calculate review dates for all employees.

EDATE formula adding 6 months to Harry Potter's hire date returning 2/1/2019

Spot-check the results:

  • Hermione Granger — Hired 9/1/2017 — 6-month review: 3/1/2018
  • Ginny Weasley — Hired 6/15/2019 — 6-month review: 12/15/2019
  • Luna Lovegood — Hired 3/22/2021 — 6-month review: 9/22/2021
Tip

This is the same function covered in adding months to a date. The difference here: we go deeper into EDATE’s edge-case behavior and pair it with EOMONTH for end-of-month patterns.

3

Find the end of the hire month with EOMONTH

Select cell G2 and enter:

Formula
=EOMONTH(D2, 0)

For Harry Potter’s hire date of 8/1/2018, this returns 8/31/2018 — the last day of August 2018. The 0 means “same month.” Copy down to G9.

EOMONTH formula returning 8/31/2018 as the last day of Harry Potter's hire month

Results for selected employees:

  • Hermione Granger — Hired 9/1/2017 — End of month: 9/30/2017
  • Neville Longbottom — Hired 1/10/2020 — End of month: 1/31/2020
  • Luna Lovegood — Hired 3/22/2021 — End of month: 3/31/2021
4

Calculate end-of-quarter dates

To find the last day of the quarter containing a hire date, combine EOMONTH with a month offset formula. Select cell H2 and enter:

Formula
=EOMONTH(D2, 3-MOD(MONTH(D2)-1, 3))

For Harry Potter hired in August (month 8), MOD(8-1, 3) equals 1, so the formula calculates EOMONTH(D2, 3-1) which is EOMONTH(D2, 2) — returning 9/30/2018, the last day of Q3 2018.

Spot-check:

  • Hermione Granger — Hired September (Q3) — End of quarter: 9/30/2017
  • Neville Longbottom — Hired January (Q1) — End of quarter: 3/31/2020
  • Fred Weasley — Hired April (Q2) — End of quarter: 6/30/2019

Practical Examples

Probation End Date (90 Days vs 3 Months)

Adding 90 days and adding 3 months produce different results. Use EDATE when the policy says “3 months”:

Formula
=EDATE(D2, 3)

For Harry Potter (hired 8/1/2018), this returns 11/1/2018. Compare that to =D2+90, which returns 10/30/2018 — a 2-day difference. For an employee hired on January 31, the gap is wider: EDATE returns 4/30/2019 while +90 returns 5/1/2019.

Monthly Billing Cycle End Date

If a subscription starts on the date in column A, find when the first billing cycle ends:

Formula
=EOMONTH(A2, 0)

This returns the last day of the start month. For a subscription starting on 3/15/2026, the billing cycle ends on 3/31/2026. For the next cycle’s end: =EOMONTH(A2, 1) returns 4/30/2026.

First Day of Next Month

EOMONTH returns the last day. Add 1 to get the first day of the next month:

Formula
=EOMONTH(D2, 0)+1

For Harry Potter’s hire date of 8/1/2018, EOMONTH(D2, 0) returns 8/31/2018. Adding 1 gives 9/1/2018 — the first day of September. This is a clean way to get the first of any month without the DATE function.

Common Errors and How to Fix Them

#VALUE! Error

EDATE or EOMONTH returns #VALUE! when the start_date argument is not a valid date. This happens when the cell contains text that looks like a date but is not recognized by Google Sheets.

Fix: Check with =ISNUMBER(D2). If it returns FALSE, the value is text. Convert it with =DATEVALUE(D2) or re-enter it as a date.

Result Displays as a Number

You enter =EDATE(D2, 6) and see 43497 instead of a date. The formula is correct — the cell format is wrong.

Fix: Select the cell, go to Format > Number > Date. The serial number displays as a readable date.

#NUM! Error

EDATE returns #NUM! when the result would be a negative date (before 12/30/1899, the Google Sheets date epoch).

Fix: Check your months argument. A very large negative value can push the result before the epoch. Verify the start_date is correct.

Note

EDATE and EOMONTH both accept negative months. =EDATE(D2, -6) moves the date 6 months backward. =EOMONTH(D2, -1) returns the last day of the previous month. This is useful for looking back at prior billing periods or review cycles.

Tips and Best Practices

  1. Use EDATE when the policy says “months.” Adding 30 days is not the same as adding one month. EDATE handles February, 30-day months, and 31-day months correctly.

  2. Use EOMONTH(date, 0) for end-of-month. This is the cleanest way to get the last day of any month. No need to calculate whether it’s 28, 29, 30, or 31.

  3. Combine EOMONTH with +1 for first-of-month. =EOMONTH(A2, 0)+1 returns the first day of the next month. =EOMONTH(A2, -1)+1 returns the first day of the current month.

  4. Pair with TODAY() for rolling deadlines. =EDATE(TODAY(), 3) returns a date 3 months from now. =EOMONTH(TODAY(), 0) returns the end of the current month. Both update automatically.

  5. Use EOMONTH for quarterly reporting. The formula =EOMONTH(A2, 3-MOD(MONTH(A2)-1, 3)) finds the end of any quarter. Combine with EOMONTH(A2, -MOD(MONTH(A2)-1, 3)) + an offset to find the start.

Frequently Asked Questions

What is the difference between EDATE and EOMONTH in Google Sheets?

EDATE returns the same day of the month, shifted by a number of months. EOMONTH returns the last day of the month, shifted by a number of months. =EDATE("1/15/2026", 3) returns 4/15/2026. =EOMONTH("1/15/2026", 3) returns 4/30/2026.

How do I add 6 months to a date in Google Sheets?

Use =EDATE(A2, 6) where A2 contains your date. EDATE moves the date forward by exactly 6 months, keeping the same day of the month. For Harry Potter’s hire date of 8/1/2018, this returns 2/1/2019.

What does EOMONTH return for months with different lengths?

EOMONTH always returns the last day of the target month. =EOMONTH("1/15/2026", 1) returns 2/28/2026. =EOMONTH("1/15/2026", 0) returns 1/31/2026. The day of the start date does not matter — EOMONTH only cares about the target month.

Can EDATE and EOMONTH subtract months?

Yes. Use a negative number for the months argument. =EDATE(A2, -3) moves the date 3 months backward. =EOMONTH(A2, -1) returns the last day of the previous month.

What happens when EDATE adds months to January 31?

EDATE adjusts to the last valid day of the target month. =EDATE("1/31/2026", 1) returns 2/28/2026 because February does not have 31 days. It never overflows into the next month.

Frequently Asked Questions

Next Steps

Continue learning with these related tutorials: