TODAY vs NOW in Excel
By ExcelReady TeamUpdated 7 min read
The short answer
Use TODAY() when you need the current date, such as for ages, days overdue or due-date checks. Use NOW() only when the time of day matters too, such as hours since a ticket was opened. TODAY returns a whole number; NOW adds the time as a decimal, which can make date comparisons and day counts come out wrong.
Key takeaways
- TODAY() returns today's date. NOW() returns today's date plus the current time.
- Excel stores the time as a fraction of a day, so NOW() at 6 PM is TODAY() plus 0.75.
- Use TODAY for anything measured in days, months or years. Use NOW only when hours or minutes matter.
- Both update when the workbook recalculates, not every second. For a fixed date stamp, press Ctrl+; instead.
- For a report with a fixed 'as of' date, type the date in a cell and point your formulas at it.
On this page+
The TODAY vs NOW Excel question is simple once you know how Excel stores time: TODAY() gives you the current date, and NOW() gives you the current date and time. Use TODAY for anything counted in days, months or years, and NOW only when hours and minutes matter. This guide is for anyone building due-date trackers, age or tenure columns, or answering date questions in an Excel test.
TODAY vs NOW Excel functions at a glance#
Both functions take no arguments and both read your computer's clock. The only difference is the time of day.
| Feature | TODAY() | NOW() |
|---|---|---|
| Returns | Current date | Current date and time |
| Stored as | A whole number, like 46325 | A number with a decimal, like 46325.75 |
| Default display | 10/30/2026 | 10/30/2026 18:00 |
| Best for | Ages, days overdue, due dates, months active | Hours elapsed, timestamps, time-based deadlines |
| Safe in date comparisons | Yes | No (the time part gets in the way) |
| Updates | When the workbook recalculates | When the workbook recalculates |
| Fixed (static) version | Ctrl+; | Ctrl+Shift+; (Mac: ⌘;) |
Why NOW is TODAY plus a decimal#
Excel stores every date as a serial number: a count of days in which 1 January 1900 is day 1. On 30 October 2026, =TODAY() returns 46325, formatted to look like a date. Our article on why Excel dates are numbers explains the system in full.
The time is stored as a fraction of a day. Noon is 0.5, 6 PM is 0.75. So at 6 PM on the same day:
=NOW() → 46325.75 (shows 10/30/2026 18:00)
=TODAY() → 46325 (shows 10/30/2026)
=NOW()-TODAY() → 0.75 (the time of day)
=INT(NOW()) → 46325 (the same as TODAY)INT drops the decimal, so =INT(NOW()) and =TODAY() give the same date. This one fact explains every TODAY vs NOW mistake below.
The same task, solved both ways#
Here are some invoices. The task: flag the ones that are overdue and count the days left. Assume today is 10/30/2026 and it is 6 PM.
| A | B | |
|---|---|---|
| 1 | Invoice | Due date |
| 2 | INV-201 | 11/14/2026 |
| 3 | INV-202 | 10/21/2026 |
| 4 | INV-203 | 10/30/2026 |
Overdue check#
=B2<TODAY()
=B2<NOW()For INV-203, due today, the TODAY version returns FALSE: it's not overdue yet. The NOW version returns TRUE, because the due date means midnight (46325) and NOW is 46325.75. The invoice looks overdue all day on its due date. That is the classic NOW bug.
Days left#
=B2-TODAY()
=B2-NOW()For INV-201, the TODAY version gives 15. The NOW version gives 14.25, which changes every time the sheet recalculates and needs rounding to make sense. When the unit is days, use TODAY.
When to use TODAY#
Use TODAY() whenever your answer is in days, months or years. It is the better choice for:
- Days overdue or days until due:
=B2-TODAY(). - Overdue flags:
=IF(B2<TODAY(),"Overdue","OK"). - Age or tenure:
=DATEDIF(B2,TODAY(),"Y")gives complete years. The DATEDIF function guide lists every unit, such as"M"for complete months. - This month's reports:
=EOMONTH(TODAY(),0)returns the last day of the current month. - Conditional formatting that highlights dates in the past, with a formula rule such as
=$B2<TODAY().
To show how many days late each invoice is, and 0 for invoices that aren't late yet:
=MAX(0,TODAY()-B2)On 10/30/2026, INV-202 (due 10/21/2026) returns 9, and INV-201 returns 0. Without MAX, invoices not yet due would show negative numbers.
For the wider toolkit (EDATE, EOMONTH, NETWORKDAYS and more), see our overview of Excel date functions.
When to use NOW#
Use NOW() only when the time of day changes the answer. It is the better choice for:
- Hours since something happened:
=(NOW()-B2)*24gives hours since the timestamp in B2, because one day is 24 hours. - Deadlines at a specific time, such as "respond within 4 hours":
=B2+4/24<NOW()is TRUE once four hours have passed. - A "last calculated" note at the top of a report, formatted as date and time.
If you only want the date part of NOW, you wanted TODAY.
Remember that the time is still there when you can't see it. A NOW cell with a plain date format looks exactly like TODAY, but it still holds the decimal. Apply a format such as m/d/yyyy h:mm to see the time, and use Format Cells (Ctrl+1, ⌘1 on a Mac) to check what a date cell really contains.
Do TODAY and NOW update automatically?#
Yes, but only when Excel recalculates, not continuously. They are volatile functions: they recalculate whenever anything in the workbook recalculates, such as when you edit a cell, open the file or press F9. A NOW cell left alone won't tick like a clock.
This has two practical effects:
- The value changes every time someone opens the file. That's what you want for a live tracker, and not what you want for a record of when something happened.
- For a fixed date stamp, don't use a formula. Press Ctrl+; to type today's date as a plain value (Control+; on a Mac). Press Ctrl+Shift+; for the current time (⌘; on a Mac). To get both, press the date shortcut, a space, then the time shortcut.
Google Sheets has both functions too, with a setting that can also refresh them every minute or hour. Our comparison of Excel vs Google Sheets for job tests covers the other differences.
Common mistakes with TODAY and NOW#
These cause most wrong date answers:
- Comparing dates with NOW.
=B2<NOW()marks items due today as overdue. Use TODAY. - Counting days with NOW.
=B2-NOW()returns decimals like 14.25. Use TODAY, or wrap it in INT. - Using TODAY for a timestamp. A "date received" column built with
=TODAY()changes to tomorrow's date tomorrow. Use Ctrl+; for values that must not change. - Typing a date in quotes.
=B2<"10/30/2026"compares a number with text, and Excel always ranks numbers below text, so it returns TRUE for every date. UseDATE(2026,10,30)or a cell that holds the date. - Seeing a number instead of a date. If
=TODAY()shows 46325, the cell is formatted as General. Press Ctrl+Shift+# to apply the date format (use Control, not ⌘, on a Mac). - Using TODAY in a report that must not change. A month-end report run with TODAY gives different answers next week. Type the "as of" date in a cell, such as F1, and point formulas at
$F$1instead.
That last point is also how you should practise. A formula that uses TODAY gives a different result every day, so the exercise on this page uses a fixed "as of" date in F1 instead.
Our recommendation#
Use TODAY() by default. Almost every business date question (overdue, due soon, age, tenure, this month) is measured in whole days, and TODAY gives clean whole numbers that compare correctly.
- Days, months, years, overdue flags: TODAY.
- Hours, minutes, time-based deadlines: NOW.
- A date or time that must never change: Ctrl+; or Ctrl+Shift+; (Mac: ⌘; for the time), not a formula.
- A report "as of" a fixed date: a date typed in one cell, referenced with
$.
If you are also comparing summary numbers for a report, our guide to AVERAGE vs MEDIAN helps you choose the honest "typical" value, and MATCH vs XMATCH shows how to find the most recent entry in a list.
Practise it#
Work out the days left in the exercise on this page. Then start the How Excel stores dates lesson to see serial numbers for yourself and build dates with DATE, YEAR, MONTH and DAY. When you're ready, the date skill summary lesson has you use DATEDIF with TODAY to count complete months for a gym's members.
Try it yourself
This is a live spreadsheet. Type the formula in the green cell and press Enter.
Live reports use TODAY(), but this report is as of the date in F1, so the answer stays the same whenever you check it. In C2, work out how many days are left until the due date in B2, counting from F1. Lock F1 with $ signs so the formula could be filled down.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Days left | ||||||
| 2 | |||||||
| 3 | |||||||
| 4 | |||||||
| 5 | |||||||
| 6 | |||||||
| 7 | |||||||
| 8 | |||||||
| 9 |
Tip: Dates are numbers of days, so you can subtract one from another. Put the later date first.
Practise this in a lesson
Frequently asked questions
What is the difference between TODAY and NOW in Excel?
TODAY() returns the current date with no time, stored as a whole number. NOW() returns the current date and time, stored as a whole number plus a decimal for the time of day.
Does NOW update automatically every second?
No. NOW and TODAY only update when the workbook recalculates, for example when you edit a cell, open the file or press F9. A clock that ticks by itself needs a macro.
How do I insert today's date so it doesn't change?
Press Ctrl+; (Control+; on a Mac) to type today's date as a fixed value. For the current time, press Ctrl+Shift+; on Windows or ⌘; on a Mac.
Why does my overdue check flag invoices that are due today?
You probably compared the due date with NOW(). A due date is midnight, and NOW() is later the same day, so =B2<NOW() is TRUE all day. Use =B2<TODAY() instead.
How do I get the date from NOW without the time?
Use =INT(NOW()), which drops the decimal part, or simply use =TODAY(). Both give the same date.