fgFormula Gym
Interactive lesson · Excel & Google Sheets

The Excel TODAY function, explained interactively.

Last updated: April 2026

TODAY returns the current date as an Excel date value. No arguments, no options — the simplest signature in the whole function library. The usefulness comes from what you put around it: days-until- deadline tables, rolling age calculations, dashboard freshness flags, all driven by a single volatile cell that updates every day at midnight.

01 · See it work

How to use TODAY

  1. In any cell, type =TODAY(). The parentheses are required even though there are no arguments — leave them empty.
  2. Press Enter. Excel displays today’s date. If it shows a number like 46134, the cell is formatted as Number — change it to Date in Format Cells.
  3. For days-until or days-since arithmetic, subtract: =A2 - TODAY() for a future date, =TODAY() - A2 for a past date. Both return an integer count of days.
  4. For a static “date inserted today” that doesn’t update tomorrow, use Ctrl+; (Windows) or Cmd+; (Mac) instead — that’s a shortcut for typing the literal date, not a function call.

In the demo below, =B2 - TODAY() drives the Days-until column. Overdue tasks show a negative number in red; today’s task shows 0 in amber; upcoming tasks show positive days in teal. In your own sheet, those values update automatically every day.

FUNCTIONTODAY
Returns today’s date as an Excel date value. No arguments, no parentheses filled in. Volatile: recalcs every time the workbook opens or a cell changes — so the value stays current without manual refresh.
D2
fx
=B2 - TODAY()
ABD
1TaskDue dateDays until due
2Ship auth fix2026-04-15-5
3Write docs2026-04-19-1
4Review PR2026-04-200
5Plan Q2 roadmap2026-04-277
6Launch v22026-05-1525
D2 is the active cell — it holds =B2 - TODAY(). The result is how many days until each task’s due date: negative means overdue, 0 means due today, positive means upcoming. This demo pins TODAY() to 2026-04-20 for consistency; in your own sheet, TODAY returns the actual current date and the numbers update automatically every day.
02 · Syntax, argument by argument

TODAY syntax and arguments

Zero arguments — the simplest signature in Excel. See Microsoft’s official TODAY reference for the canonical specification.

=TODAY()
(none)
TODAY takes no arguments. The empty parentheses are still required — =TODAY without them returns the function reference, not a value. Output is a date serial number formatted as a date; the internal value is an integer representing the number of days since 1900-01-01 (Excel’s date epoch).
03 · In the wild

TODAY examples

Four patterns that cover most real-world TODAY use.

Example 1: TODAY — days until a deadline

The canonical case. Subtract today from a future date to get the days remaining.

=A2 - TODAY()

Returns a positive integer for future dates, negative for past, 0 for today. Combine with IF or IFS for status labels: =IF(A2-TODAY()<0, "Overdue", "On track"). No date parsing needed — Excel handles the arithmetic natively.

Example 2: TODAY — age from a birthdate

Rolling age in completed years. DATEDIF handles the birthday-not-yet-this-year edge case so you don’t have to.

=DATEDIF(A2, TODAY(), "Y")

Returns the number of completed years — someone born on April 21 will turn older tomorrow, not today. For decimal age, =(TODAY() - A2) / 365.25. The DATEDIF function is undocumented in recent Excel versions but still works in all releases.

Example 3: TODAY — freshness flag for a dashboard

Compare a data refresh timestamp against TODAY to flag stale rows. Combined with conditional formatting, a glance shows which parts of a report need updating.

=IF(TODAY() - A2 > 7, "Stale", "Fresh")

Flags rows whose refresh date is more than a week ago. Replace 7 with any threshold. Because TODAY is volatile, the flag updates automatically as days pass — no need to re-run the report formulas.

Example 4: TODAY — static vs volatile date insertion

Two ways to put today’s date in a cell, with very different behaviour when the file is opened tomorrow.

=TODAY() — updates every day Ctrl+; (Cmd+; Mac) — static literal, never updates

Use TODAY() for a rolling “days since” calculation. Use Ctrl+; for a “signed on this date” timestamp or any audit field that should never change. Same appearance in the cell; wildly different behaviour at the next open.

04 · Errata

Common TODAY errors and fixes

Four failure modes, each with what to check and how to recover.

TODAY shows a number, not a date

Cause: the cell is formatted as Number or General. Excel stores dates as serial numbers internally; the format is what turns 46134 into 2026-04-20.

Select the cell → Format Cells → Date → pick a format. Or use the ribbon: Home → Number format → Short Date / Long Date. Keyboard shortcut: Ctrl+Shift+# (Windows) applies the default date format in one keystroke.

TODAY changed and broke historical data

Cause: TODAY is volatile. A cell that was showing “inserted April 15” yesterday now shows today’s date — the formula recalcs every time the workbook opens.

For “inserted on” timestamps, never use =TODAY(). Use Ctrl+; to type a static literal, or paste-special-as-value over a TODAY cell to freeze it. In modern Excel, Power Automate or Office Scripts can log immutable insertion dates programmatically.

TODAY works locally but not on a shared file

Cause: different users see different values because TODAY uses each machine’s local clock. A colleague in a different time zone may get a date one day apart from you.

For cross-timezone consistency, anchor to UTC or a specific locale. There’s no built-in TODAY-UTC; in Excel 365 with Power Query, pull the date from a web service. For most dashboards, local-time TODAY is fine and the user’s mental model.

TODAY in a shared workbook feels laggy

Cause: every TODAY cell recalcs on every edit (volatility). With hundreds of TODAY calls driving dashboards, the recalc cost adds up.

Centralise TODAY in a single cell (e.g. $A$1: =TODAY()) and reference $A$1 everywhere else. The dependent cells recalc only when $A$1 changes, which is once per open. Classic pattern for large date-driven workbooks.

05 · Kindred functions

TODAY vs NOW, DATE & DAY

Four date functions with overlapping use cases. Pick by whether you want the current date, a specific date, or a component of a date.

FunctionReturnsArgsVolatile?
TODAYCurrent date (midnight)(none)Yes — recalcs once per day
NOWCurrent date + time(none)Yes — recalcs on every edit
DATESpecific date from y/m/dyear, month, dayNo
DAY / MONTH / YEARComponent of a dateserial_numberNo

Rule of thumb: TODAY for rolling “days since” and “days until” arithmetic. NOW only when time-of-day matters (audit logs, race-condition timestamps). DATE to build a specific date from year/month/day integers — especially the month-overflow trick for “last day of month” logic.

06 · Marginalia

TODAY frequently asked questions

6.01How do I insert today’s date in Excel without it changing tomorrow?

Use Ctrl+; (semicolon) on Windows or Cmd+; on Mac — a keyboard shortcut that types today’s literal date as a static value. TODAY() is volatile and updates every time the workbook recalcs; the Ctrl+; shortcut inserts the current date once and freezes it. Use TODAY when you want a rolling “today”, Ctrl+; when you want a timestamp.

6.02Does TODAY include the current time?

No — TODAY returns a date serial number with the time set to midnight (00:00). For a date-and-time timestamp, use NOW(). TODAY() minus NOW() gives negative fractional days equal to how much of the day has passed, which is sometimes used for “time until midnight” calculations.

6.03Why does TODAY show a number instead of a date?

The cell is formatted as General or Number instead of Date. Excel stores dates internally as serial numbers (days since 1900-01-01); TODAY returns that number, but normally the cell’s date format renders it as a calendar date. Select the cell, Format Cells → Date, pick a format, and the number resolves to readable text.

6.04Can I use TODAY to calculate age from a birthdate?

Yes — =DATEDIF(A2, TODAY(), "Y") returns the completed years between a birthdate in A2 and today. DATEDIF handles the year/month boundary correctly (leap years, birthday-not-yet-occurred- this-year edge cases). For decimal years, use (TODAY()-A2)/365.25.

6.05What’s the difference between TODAY and NOW?

TODAY returns just the date with time set to 00:00. NOW returns the date plus the current time down to the second. If you don’t care about time of day, TODAY is cleaner because its value only changes once per day, cutting down on volatile recalcs. Use NOW for audit logs and high-resolution timestamps.

Microsoft Excel is a registered trademark of Microsoft Corporation. Google Sheets is a trademark of Google LLC. Formula Gym is not affiliated with, endorsed by, or sponsored by either company.