Excel TODAY Function: Syntax, Use Cases, Examples, and Common Mistakes

Excel TODAY function: syntax, how to use it, real-world examples, calculate age and elapsed days, common mistakes, and alternatives like NOW and DATE.

Excel TODAY Function: Syntax, Use Cases, Examples, and Common Mistakes

The Excel TODAY function returns the current date. It's a simple but powerful tool — just type =TODAY() with no arguments, and Excel returns today's date. Use it to track elapsed time, calculate ages, generate dynamic reports, and build any spreadsheet that needs to know the current date.

What TODAY does. Returns today's date as an Excel serial date (number) but displays as date format. Updates automatically when the workbook recalculates — open it tomorrow, and TODAY() returns tomorrow's date. No arguments, no complex syntax.

Common uses. Calculate age (today - birthdate). Track days since an event. Build dynamic 'as of' headers. Check overdue items. Calculate elapsed days in projects. Generate report dates that update automatically. Conditional formatting based on date comparison.

Why TODAY matters. Eliminates manual date updates in spreadsheets. Makes reports dynamic. Enables automated age and elapsed-time calculations. Works seamlessly with date arithmetic.

How TODAY differs from NOW. TODAY returns just the date (12:00 AM). NOW returns date AND time. For most reporting, TODAY is what you want. For time-sensitive calculations (logging exact moments), NOW.

Volatile function warning. TODAY is volatile — recalculates every time the workbook recalculates, not just when its source data changes. For most spreadsheets this is fine. In very large workbooks with thousands of TODAY() instances, can slow performance.

This guide covers TODAY syntax, examples, integration with other functions, common mistakes, and alternatives.

Quick Facts

  • Syntax: =TODAY() — no arguments
  • Returns: Current date (Excel serial number, formatted as date)
  • Auto-updates: Recalculates when workbook recalculates
  • Volatile: Yes — can affect performance in large workbooks
  • Format: Excel date (mm/dd/yyyy default, customizable)
  • Excel versions: All modern versions (97+)
  • Compatible with: Date arithmetic, DATEDIF, YEARFRAC, NETWORKDAYS
  • Related: NOW() returns date+time, DATE() builds specific date
  • Static alternative: Ctrl+; inserts today as static date
  • Common use: Age calculation, elapsed time, dynamic reports

Basic usage of TODAY. The simplest function in Excel.

Single cell. Type =TODAY() in any cell. Press Enter. The cell shows today's date.

Format options. Right-click cell → Format Cells → Date. Choose format: 3/14/2025, March 14, 2025, 14-Mar-2025, etc. Format is display only; underlying value is Excel serial number.

Date in header. Use TODAY in a report header: ='Report as of '&TEXT(TODAY(),"mmm d, yyyy"). Displays: 'Report as of Mar 14, 2025'. Updates automatically when file opens.

Days until event. =target_date - TODAY(). Returns number of days from today to event. Format as number.

Days since event. =TODAY() - start_date. Returns positive number of days passed.

Tomorrow's date. =TODAY()+1.

Day of week. =WEEKDAY(TODAY()). Returns number 1-7 (Sunday=1 by default). Customize with second argument.

Month name. =TEXT(TODAY(),"mmmm"). Returns 'March'. Useful in dynamic reports.

Today's year. =YEAR(TODAY()). Returns current year as number (2025, 2026...).

Day number. =DAY(TODAY()). Returns day of month (1-31).

End of current month. =EOMONTH(TODAY(),0). Returns last day of current month.

First of current month. =DATE(YEAR(TODAY()),MONTH(TODAY()),1). Returns first day of current month.

Microsoft Excel - Microsoft Excel certification study resource

Basic Examples

Current Date

=TODAY() — returns today's date.

Days Until

=target_date - TODAY() — days remaining.

Days Since

=TODAY() - start_date — days elapsed.

Tomorrow

=TODAY()+1 — tomorrow's date.

Year

=YEAR(TODAY()) — current year as number.

End of Month

=EOMONTH(TODAY(),0) — last day of current month.

Calculating age with TODAY. Common use case.

Basic age formula. =DATEDIF(birthdate, TODAY(), "y"). Returns whole number of years. Example: birthdate in A2, formula in B2: =DATEDIF(A2, TODAY(), "y").

DATEDIF arguments. First argument: start date (older). Second: end date (newer). Third: unit. 'y' = years. 'm' = months. 'd' = days. 'ym' = months ignoring years. 'md' = days ignoring years and months. 'yd' = days ignoring years.

Full age with years, months, days. Use multiple DATEDIF calls. =DATEDIF(A2,TODAY(),"y")&" years, "&DATEDIF(A2,TODAY(),"ym")&" months, "&DATEDIF(A2,TODAY(),"md")&" days". Returns text like '34 years, 5 months, 17 days.'

Age in months only. =DATEDIF(A2, TODAY(), "m"). Returns total months between dates.

Age in days. =TODAY()-A2. Returns total days elapsed. Format as number.

Age with decimals. =(TODAY()-A2)/365.25. Returns years as decimal (34.5). The 365.25 accounts for leap years.

Years of service. Same approach for employee tenure: =DATEDIF(hire_date, TODAY(), "y").

Age in years and months as decimal. =DATEDIF(A2,TODAY(),"y")+DATEDIF(A2,TODAY(),"ym")/12. Returns 34.42 for 34 years 5 months.

Reverse: birthdate from age. =DATE(YEAR(TODAY())-age, MONTH(TODAY()), DAY(TODAY())). Returns approximate birthdate.

Common age calculation mistakes. Using TODAY() instead of birthdate as first argument in DATEDIF (gives error or 0). Forgetting that DATEDIF returns whole years (doesn't round up). Using YEAR(TODAY())-YEAR(birthdate) — doesn't account for whether birthday has passed yet this year (incorrect by 1 if birthday is later this year).

Age Calculations

=DATEDIF(birthdate, TODAY(), "y"). Returns whole years. The most common age calculation. Birthday hasn't passed this year? Returns previous year's age (correct behavior).

Tracking elapsed time with TODAY. Project timelines, overdue items, response times.

Days since project start. =TODAY()-project_start_date. Format as number. Add to project dashboard.

Days until deadline. =deadline_date-TODAY(). Positive = future, negative = past due, 0 = today.

Highlight overdue items. Use conditional formatting. Select the dates column. Home → Conditional Formatting → New Rule → Use formula. Formula: =A2<TODAY()-7. Highlights items older than 7 days. Apply red fill or warning color.

Color-coded status. Multiple conditional formatting rules: =A2<TODAY()-30 (red, very overdue), =A2<TODAY()-7 (yellow, overdue), =A2<=TODAY() (green, due now/today).

Business days since event. Use NETWORKDAYS instead of subtraction. =NETWORKDAYS(start_date, TODAY()). Excludes weekends. Excludes holidays if you provide a holiday list.

Weeks since event. =(TODAY()-start_date)/7. Returns decimal weeks.

Calendar quarter. =CEILING.MATH(MONTH(TODAY()),3)/3. Returns 1-4 (Q1, Q2, Q3, Q4).

Days remaining in current month. =EOMONTH(TODAY(),0)-TODAY(). Returns days until end of current month.

Days remaining in current year. =DATE(YEAR(TODAY()),12,31)-TODAY(). Returns days until December 31.

Workday calculation excluding holidays. =NETWORKDAYS(start_date, TODAY(), holidays_range). Where holidays_range is a list of holiday dates.

Days in Common Periods

7Days in a week
30Days in average month
90Days in a quarter
365.25Days in average year (incl leap)
260Weekdays in a year
104Weekend days in a year
Excellence Playa Mujeres - Microsoft Excel certification study resource

Dynamic reporting with TODAY. Make reports update themselves.

Report header that updates. ='Sales Report - ' & TEXT(TODAY(), "mmmm d, yyyy"). Displays 'Sales Report - March 14, 2025.' Updates every time file opens.

Current month name. =TEXT(TODAY(),"mmmm"). Returns 'March,' 'April,' etc.

Days in current month. =DAY(EOMONTH(TODAY(),0)). Returns 28-31.

Current calendar week. =WEEKNUM(TODAY()). Returns 1-53. Default starts Sunday; use second argument to change.

ISO week. =ISOWEEKNUM(TODAY()). Returns ISO 8601 week (starts Monday).

Quarter label. ="Q"&CEILING.MATH(MONTH(TODAY()),3)/3&" "&YEAR(TODAY()). Returns 'Q1 2025'.

Dynamic month-to-date data. Use SUMIFS with date range. =SUMIFS(amount_column, date_column, ">="&DATE(YEAR(TODAY()),MONTH(TODAY()),1), date_column, "<="&TODAY()).

Year-to-date data. =SUMIFS(amount, date, ">="&DATE(YEAR(TODAY()),1,1), date, "<="&TODAY()).

Same period last year (comparison). =SUMIFS(amount, date, ">="&DATE(YEAR(TODAY())-1,MONTH(TODAY()),1), date, "<="&EDATE(TODAY(),-12)).

Rolling 30 days. =SUMIFS(amount, date, ">="&TODAY()-30, date, "<="&TODAY()).

Aging analysis. Categorize items by age: =IF(TODAY()-invoice_date>90,"90+ days",IF(TODAY()-invoice_date>60,"60-90 days",IF(TODAY()-invoice_date>30,"30-60 days","Under 30 days"))).

Dynamic Reports

Self-Updating Headers

='Report as of '&TEXT(TODAY(),"mmm d, yyyy").

Month-to-Date

SUMIFS with date filters using TODAY for current period.

Year-over-Year

Compare current YTD to same period last year using EDATE.

Rolling Periods

Last 30/60/90 days: date >= TODAY()-N to TODAY().

Aging Buckets

Categorize by days old: under 30, 30-60, 60-90, 90+.

Conditional Format

Highlight overdue, due soon, due today with rule-based color.

Common TODAY mistakes and solutions.

Mistake 1: Forgetting parentheses. =TODAY (without parentheses) returns error. Always =TODAY() with empty parentheses.

Mistake 2: Static vs dynamic confusion. =TODAY() updates each time workbook recalculates. If you want static today's date, use Ctrl+; (semicolon) keyboard shortcut. Inserts today's date as a value, not formula.

Mistake 3: Wrong date format. Cell shows weird number (e.g., 45370) instead of date. Cause: number format. Solution: Right-click cell → Format Cells → Date → choose format.

Mistake 4: TODAY returning yesterday. Cause: time zone or system clock issue. Check system clock. In Excel: =TODAY() always reflects system date.

Mistake 5: Comparing dates incorrectly. =TODAY()=A2 returns FALSE even when both show same date. Cause: A2 has time component (use NOW). Solution: Use TODAY() comparison only with date-only cells, or use INT(A2)=TODAY() to strip time.

Mistake 6: Date arithmetic with text. If birthdate is stored as text ('5/14/1990'), DATEDIF won't work. Convert to date first: =DATEVALUE(text_cell) or reformat the cell.

Mistake 7: Volatile performance. TODAY recalculates with workbook. In large workbooks (thousands of formulas), can slow Excel. Solution: minimize TODAY uses; use static dates where appropriate.

Mistake 8: Future date assumptions. =TODAY()+30 gives a date 30 days in future. Works for most cases, but be careful with month-end calculations (use EDATE for 'one month from today').

Mistake 9: Wrong year separator. International date formats (DD/MM/YYYY vs MM/DD/YYYY) cause confusion when sharing files. TODAY itself doesn't matter; display formatting does.

TODAY vs other date functions. Choosing the right one.

TODAY vs NOW. TODAY: returns date only. NOW: returns date + time. Use TODAY for daily reporting, age calculations, days-elapsed. Use NOW for time tracking, log timestamps, time-of-day calculations.

TODAY vs DATE. TODAY: returns current date. DATE: builds a specific date from year, month, day. Use TODAY when you want current date. Use DATE to build specific dates from components.

TODAY vs DATEVALUE. TODAY: today's date. DATEVALUE: converts text date to serial number. Use TODAY for current date. Use DATEVALUE to convert text dates to real dates.

TODAY vs INT(NOW). =INT(NOW()) returns same value as TODAY() (date stripped of time). Both work. TODAY is cleaner.

TODAY vs Ctrl+;. TODAY: formula that updates. Ctrl+;: keyboard shortcut for static date. Use TODAY for dynamic; Ctrl+; for static.

WEEKDAY function. Returns day of week (1-7). =WEEKDAY(TODAY()) gives today's day number. Useful in conditional logic.

NETWORKDAYS. Counts working days between two dates excluding weekends. =NETWORKDAYS(TODAY()-30, TODAY()). Useful for business day calculations.

EOMONTH. End of month: =EOMONTH(TODAY(),0). End of current month. Use offsets (positive or negative) for future/past months.

EDATE. Date X months from another date: =EDATE(TODAY(),3). Three months from today.

YEAR, MONTH, DAY. Extract components: =YEAR(TODAY()), =MONTH(TODAY()), =DAY(TODAY()).

DATEDIF. Difference between two dates with various units. Most commonly used with TODAY: =DATEDIF(birthdate,TODAY(),"y") for age.

Date Function Family

=TODAY(). Current date only. Updates each workbook recalculation. Most common use: dynamic date displays, age calculations, elapsed time. No arguments.

Excel Spreadsheet - Microsoft Excel certification study resource

Real-world applications. Where TODAY shines in business.

Project management. Days in project: =TODAY()-start_date. Days until milestone: =milestone-TODAY(). Project completion %: =(TODAY()-start)/(end-start). Days remaining: =end-TODAY(). Overdue check: =IF(TODAY()>end,"Overdue","On track").

HR and payroll. Employee tenure: =DATEDIF(hire_date,TODAY(),"y"). Anniversary date: =EDATE(hire_date, 12*years_to_add). Days until performance review: =review_date-TODAY(). Service award eligibility: =DATEDIF(hire,TODAY(),"y")>=5.

Sales pipeline. Days in current stage: =TODAY()-stage_entry_date. Days since last contact: =TODAY()-last_contact_date. Deal age: =TODAY()-deal_creation. Forecast 'as of' date: ="Forecast as of "&TEXT(TODAY(),"mmm d").

Customer service. Ticket age: =TODAY()-ticket_creation. Days since last response: =TODAY()-last_response. SLA compliance: =IF(TODAY()-creation>sla_days,"Breach","Compliant"). Escalation alerts using conditional formatting.

Financial reporting. Current period: =YEAR(TODAY())&" "&"Q"&CEILING.MATH(MONTH(TODAY()),3)/3. Year-to-date totals using SUMIFS. Days in current month/quarter for run-rate calculations. Aging buckets for accounts receivable.

Inventory and operations. Days since last order: =TODAY()-order_date. Stale stock identification: =TODAY()-receipt_date>365. Expiry date warnings: =IF(expiry-TODAY()<30,"Expiring soon","OK").

Compliance and audit. Renewal due dates: =EDATE(last_renewal,renewal_period). Days until certification expires: =cert_expires-TODAY(). Audit cycle tracking: =DATEDIF(last_audit,TODAY(),"m")>=12.

Personal finance. Days until paycheck: =next_paycheck-TODAY(). Savings goal progress: =(TODAY()-start_date)/(end_date-start_date). Retirement countdown: =retirement_date-TODAY().

Industry Uses

Project Management

Days elapsed, days remaining, completion %, overdue flags.

HR/Payroll

Tenure, anniversaries, review dates, service eligibility.

Sales Pipeline

Deal age, stage time, days since contact.

Customer Service

Ticket age, SLA compliance, escalation triggers.

Financial

Current period, YTD totals, aging buckets, run-rates.

Compliance

Renewal dates, expiration warnings, audit cycles.

Advanced TODAY techniques.

Anchor TODAY in one cell. Don't use =TODAY() in every formula. Put =TODAY() in cell A1 (named 'today_ref'). Reference $A$1 (or 'today_ref') elsewhere. Reduces volatile recalculation, improves performance.

Lock TODAY for historical records. Use Ctrl+; to insert static date. Or wrap TODAY in IF to conditionally lock: =IF(A2="",TODAY(),A2). When A2 first calculates, TODAY locks in; subsequent recalcs preserve original date.

Use of TEXT to format. =TEXT(TODAY(),"yyyy-mm-dd"). Returns text 'YYYY-MM-DD' format. Useful for filenames, sorting, exporting to systems requiring specific formats.

Comparing date ranges. To check if today is between two dates: =AND(TODAY()>=start,TODAY()<=end). Returns TRUE/FALSE.

Conditional content based on date. =IF(MONTH(TODAY())=12,"Holiday season!",""). Returns 'Holiday season!' in December.

Calculate business days remaining. =NETWORKDAYS(TODAY(),end_date) returns business days from today to end. Useful for project deadlines.

Quarterly progress. =DAY(TODAY())/DAY(EOMONTH(TODAY(),0)). Returns fraction of current month elapsed (0.45 = 45% through month).

Days into quarter. =TODAY()-DATE(YEAR(TODAY()),CEILING.MATH(MONTH(TODAY()),3)-2,1). Returns days since start of current quarter.

Power Query and TODAY. Power Query has DateTime.LocalNow() for dynamic dates. Different from Excel's TODAY; both useful in different contexts.

VBA equivalent. Date function in VBA returns today's date. Equivalent to Excel's TODAY() in VBA code.

TODAY Pros and Cons

Pros
  • +TODAY has a publicly available content blueprint — you know exactly what to prepare for
  • +Multiple preparation pathways accommodate different schedules and budgets
  • +Clear score reporting shows specific strengths and weaknesses
  • +Study communities share current insights from recent test-takers
  • +Retake policies allow recovery from a difficult first attempt
Cons
  • Tested content scope requires substantial preparation time
  • No single resource covers everything optimally
  • Exam-day performance can differ from practice test performance
  • Registration, prep, and retake costs accumulate significantly
  • Content changes between versions can make older materials less reliable

Power tips for TODAY mastery. Best practices from spreadsheet professionals.

Anchor TODAY in one cell. Put =TODAY() in cell A1 (or any single cell). Reference $A$1 elsewhere instead of calling =TODAY() in every formula. This significantly improves large-workbook performance by reducing the number of volatile recalculations. The principle: one TODAY call, many references.

Lock historical dates from auto-update. Use conditional formula: =IF(A2="",TODAY(),A2). When A2 first gets the value, TODAY locks in. Subsequent recalculations preserve the original date. Useful for tracking 'date created' or 'first seen' values that shouldn't change.

Format dates for filenames. =TEXT(TODAY(),"yyyy-mm-dd") returns 'YYYY-MM-DD' format like '2025-03-14.' This format sorts naturally in folders and is internationally unambiguous — perfect for naming exported reports, backups, or archives.

Date range checks. =AND(TODAY()>=start, TODAY()<=end) returns TRUE if today falls within the range. Useful for active campaign checks, valid coupon periods, and subscription status verification.

Business days remaining. =NETWORKDAYS(TODAY(), deadline) returns business days excluding weekends. Add holidays as third argument: =NETWORKDAYS(TODAY(), deadline, holiday_range). Critical for project planning where weekends don't count.

Month and quarter progress tracking. =DAY(TODAY())/DAY(EOMONTH(TODAY(),0)) returns fraction of current month elapsed (0.45 = 45% through). Useful for proportional forecasting — if you're 45% through the month and at $45K of $100K target, you're on track.

Power Query equivalent. In Power Query, use DateTime.LocalNow() or Date.From(DateTime.LocalNow()) for dynamic dates in queries. Different syntax from Excel formulas but same concept — useful when transforming data before bringing it into your workbook.

VBA equivalent. In macros, use the Date function (no parentheses) to get today's date. Also Now() for date+time. Useful for stamping log entries or timestamps in automation.

Excel Questions and Answers

Final thoughts. The TODAY function is one of Excel's simplest yet most powerful tools. Type =TODAY() and you've unlocked an entire dimension of dynamic spreadsheets — reports that update themselves, ages that calculate automatically, deadlines that warn you when overdue, and dashboards that always reflect the current state of your business.

Master it by combining with other functions. DATEDIF for age and tenure calculations. EOMONTH for month-end logic and billing cycles. NETWORKDAYS for business days excluding weekends and holidays. EDATE for renewals and anniversaries. The combination of TODAY + date functions handles roughly 90% of date-related work in Excel.

Watch the volatile performance issue. In large workbooks, anchor TODAY in one cell and reference it elsewhere rather than recalculating across thousands of cells. Use Ctrl+; for static dates when you don't need dynamic updating. These small optimizations matter in workbooks with heavy date calculations.

The applications are endless: project tracking, HR systems, sales dashboards, financial reports, compliance calendars, personal budgets, customer service SLAs, inventory aging, contract renewals. Every spreadsheet benefits from knowing what 'today' is and acting on that knowledge intelligently.

Build the habit. Start your reports with a TODAY-based header that updates automatically. Add an aging analysis to your accounts receivable. Calculate elapsed time on every project. Set up conditional formatting to highlight overdue items. The small investment in mastering TODAY pays back forever in cleaner, more responsive spreadsheets that work for you rather than requiring constant manual updates from you.

About the Author

James R. HargroveJD, LLM

Attorney & Bar Exam Preparation Specialist

Yale Law School

James R. Hargrove is a practicing attorney and legal educator with a Juris Doctor from Yale Law School and an LLM in Constitutional Law. With over a decade of experience coaching bar exam candidates across multiple jurisdictions, he specializes in MBE strategy, state-specific essay preparation, and multistate performance test techniques.