How to Use TODAY in Excel
The TODAY function in Excel returns the current date based on your computer's system clock. Unlike manually typing a date, TODAY updates automatically whenever you open the workbook or when Excel...
Key Insights
- The TODAY function returns the current date and automatically updates when you open your workbook, making it essential for dynamic spreadsheets that need current date references
- TODAY is a volatile function that recalculates every time Excel recalculates, which can impact performance in large workbooks with many instances
- Combining TODAY with functions like IF, DATEDIF, and TEXT transforms it from a simple date stamp into a powerful tool for deadline tracking, age calculations, and conditional formatting
Understanding the TODAY Function
The TODAY function in Excel returns the current date based on your computer’s system clock. Unlike manually typing a date, TODAY updates automatically whenever you open the workbook or when Excel recalculates. The syntax is refreshingly simple: =TODAY() with no parameters required.
Excel stores dates as serial numbers—the number of days since January 1, 1900. When you enter =TODAY(), Excel calculates the serial number for the current date and displays it in whatever date format you’ve applied to the cell. This serial number system is what makes date arithmetic possible in Excel.
The function’s dynamic nature makes it invaluable for spreadsheets that need to stay current without manual updates. Whether you’re tracking project deadlines, calculating ages, or generating automated reports, TODAY eliminates the need to constantly update date references.
Basic Implementation and Formatting
Implementing TODAY is straightforward. Simply enter =TODAY() in any cell, and Excel displays the current date. By default, you’ll see the date in your system’s short date format (typically mm/dd/yyyy in the US).
=TODAY()
The real power comes from formatting the output. Right-click the cell, select “Format Cells,” and choose from numerous date formats. Or use the TEXT function to specify exactly how you want the date displayed:
=TEXT(TODAY(), "dddd, mmmm dd, yyyy")
This formula returns something like “Monday, December 16, 2024” instead of the default “12/16/2024”. The TEXT function is particularly useful when concatenating dates with text strings for headers or labels.
For custom formatting without TEXT, you can also apply cell formatting directly. Common format codes include:
mm/dd/yyyyfor 12/16/2024dd-mmm-yyfor 16-Dec-24mmmm d, yyyyfor December 16, 2024
Calculating Date Differences
One of TODAY’s most practical applications is calculating the difference between the current date and other dates. This is fundamental for deadline tracking, age calculations, and time-based analysis.
To calculate days since a past date (assuming the date is in cell A2):
=TODAY() - A2
This returns the number of days between the date in A2 and today. For days until a future date:
=B2 - TODAY()
For more sophisticated date calculations, combine TODAY with DATEDIF, which calculates the difference between two dates in years, months, or days:
=DATEDIF(A2, TODAY(), "Y")
=DATEDIF(A2, TODAY(), "M")
=DATEDIF(A2, TODAY(), "D")
The third parameter determines the unit: “Y” for years, “M” for months, “D” for days. This is perfect for calculating someone’s age or an employee’s tenure. For a complete age calculation showing years and months:
=DATEDIF(A2, TODAY(), "Y") & " years, " & DATEDIF(A2, TODAY(), "YM") & " months"
The “YM” parameter gives you the remaining months after accounting for complete years.
Combining TODAY with Other Functions
TODAY becomes exponentially more useful when combined with other Excel functions. The IF function creates conditional logic based on date comparisons:
=IF(A2<TODAY(), "Overdue", "On Track")
This checks if a deadline in A2 has passed. You can extend this logic for more nuanced status tracking:
=IF(A2<TODAY(), "Overdue", IF(A2-TODAY()<=7, "Due Soon", "On Track"))
This formula flags items as “Overdue” if past due, “Due Soon” if within 7 days, and “On Track” otherwise.
The WEEKDAY function combined with TODAY helps with day-of-week calculations:
=WEEKDAY(TODAY())
This returns a number from 1-7 representing the day of week (Sunday=1 by default). Useful for conditional formatting or identifying weekend dates.
EOMONTH returns the last day of a month, which combined with TODAY gives you month-end dates:
=EOMONTH(TODAY(), 0)
=EOMONTH(TODAY(), 1)
The first formula returns the last day of the current month; the second returns the last day of next month. The second parameter specifies how many months forward or backward from TODAY.
For date arithmetic, combine TODAY with the DATE function:
=DATE(YEAR(TODAY()), MONTH(TODAY())+3, DAY(TODAY()))
This adds three months to today’s date. While you could use =TODAY()+90, using DATE with MONTH ensures you get the exact same day three months later, accounting for varying month lengths.
Common Pitfalls and Best Practices
TODAY vs NOW: Don’t confuse TODAY with NOW. TODAY returns only the date (serial number with no time component), while NOW returns both date and time. Use NOW when you need timestamp precision; use TODAY for date-only calculations. NOW is even more volatile and recalculates more frequently.
Volatile Function Performance: TODAY is a volatile function, meaning it recalculates every time Excel recalculates—not just when its dependencies change. In workbooks with hundreds or thousands of TODAY formulas, this can cause noticeable slowdown. If you have performance issues, consider:
- Reducing the number of TODAY instances
- Using static dates where appropriate
- Replacing TODAY with a cell reference to a single TODAY calculation
Circular References: Be cautious when using TODAY in formulas that feed into other calculations that might reference back to the original cell. This creates circular references that can cause calculation errors.
When to Use Static Dates: If you need a date stamp that doesn’t change (like a record creation date), don’t use TODAY. Instead, use Ctrl+; (semicolon) to insert the current date as a static value. This enters the date as a value, not a formula, so it won’t update.
Real-World Applications
Automatic Report Headers: Create dynamic report headers that always show the current date:
="Report Generated: " & TEXT(TODAY(), "mm/dd/yyyy")
="Monthly Summary for " & TEXT(TODAY(), "mmmm yyyy")
Dynamic Age Calculator: Build a calculator that automatically updates ages based on birthdates:
=DATEDIF(B2, TODAY(), "Y")
Place this in a column next to birthdates, and ages automatically stay current.
Invoice Aging Report: Track how long invoices have been outstanding:
=TODAY() - [Invoice Date]
=IF(TODAY()-[Invoice Date]>90, "Seriously Overdue", IF(TODAY()-[Invoice Date]>60, "Overdue", "Current"))
Combine this with conditional formatting to highlight aging invoices in red.
Employee Tenure Tracking: Calculate how long employees have been with the company:
=DATEDIF([Hire Date], TODAY(), "Y") & " years, " & DATEDIF([Hire Date], TODAY(), "YM") & " months"
Project Dashboard: Create a status dashboard that automatically flags at-risk projects:
=IF(TODAY()>[Deadline], "LATE", IF([Deadline]-TODAY()<=3, "URGENT", "OK"))
Subscription Expiration Tracker: Monitor when subscriptions or contracts expire:
=[Expiration Date] - TODAY()
=IF([Expiration Date]-TODAY()<=30, "Renew Soon", "Active")
The TODAY function seems simple on the surface, but its real value emerges when you combine it with Excel’s other date and logical functions. By mastering these combinations, you can build spreadsheets that maintain themselves, automatically flagging issues and updating calculations without manual intervention. The key is understanding when to use dynamic dates versus static dates, and being mindful of performance implications in larger workbooks.