A sales manager opens the monthly performance dashboard and wants to see “today’s sales” at a glance — not yesterday’s, not this month’s average, but exactly what is happening right now. The problem is that most reports are built with static dates, so they go out of date as soon as the month changes or a new day starts.
In many real projects, Excel-based reports get lifted into Power BI Desktop as-is, with fixed filters like “01-Apr-2025 to 30-Apr-2025”. The result: every month someone must update filters, regenerate exports, and notify stakeholders. That is exactly where the Power BI DAX TODAY() function becomes a simple but powerful way to make the report “time-aware” and self-updating.
This guide walks through how the TODAY() function works in Power BI DAX, how to use it with a proper Date table, and several real-world examples like “Today’s Sales”, “Current Month”, “Last 7 Days”, and “Overdue items”, along with common mistakes and best practices.
What Is the Power BI DAX TODAY() Function?
The TODAY() function in Power BI DAX returns the current date based on your system or service date. It does not take any arguments, so the syntax is very simple:
Today Date = TODAY()

This means every time your dataset refreshes in Power BI Desktop or Power BI Service, TODAY() will evaluate to the date on that day. So if you refresh tomorrow, the value automatically moves forward.
If you are just starting with Power BI DAX, it is worth learning a few related date functions like CALENDAR, DATEADD, and DATEDIFF. You can also explore more DAX basics in this guide on Power BI DAX.
Pro Tip:
I have found that many beginners testTODAY()in a calculated column first, then later move it into a Measure. Always prefer measures for calculations that depend on the filter context (like today, month, year), especially when you start building KPIs.
Set Up a Power BI Date Table Before Using the DAX TODAY() Function
Before you start using TODAY() in real reports, you should build a dedicated Date table. This makes all your date-based calculations reliable and easier to maintain.
Create a Power BI Date Table Using DAX
In Power BI Desktop, go to Modeling > New Table, and enter something like this:
Date =
ADDCOLUMNS (
CALENDAR ( DATE ( 2020, 1, 1 ), DATE ( 2030, 12, 31 ) ),
"Year", YEAR ( [Date] ),
"Month Number", MONTH ( [Date] ),
"Month Name", FORMAT ( [Date], "MMM" ),
"Year-Month", FORMAT ( [Date], "YYYY-MM" ),
"Day", DAY ( [Date] )
)

Then:
- Select the Date table.
- Go to Table tools > Mark as date table.
- Choose the Date column.

Now you can create relationships between your Date table and your main fact tables (for example, Sales[OrderDate] to Date[Date]). If you want to go deeper into date filtering techniques, check out this post on Power BI date filter by date.
Power BI DAX TODAY() Example: Display Today’s Date in a Card Visual
Start with a simple example: display today’s date on your report.
Create a Measure:
Today Date = TODAY()
Then:
- Add a Card visual to the report canvas.
- Drag the Today Date measure into the Fields well.
- Format the date by going to Format > Data label and choosing your preferred date format.

This is useful when stakeholders want to quickly verify that the report is refreshed and up to date. For more formatting tricks, you can also read how to convert date to text in Power BI.
Power BI DAX TODAY() Example: Calculate Today’s Sales
Imagine a Sales dashboard for a mid-sized retail company with a Sales table:
- Sales[OrderDate] – Date of the order
- Sales[Amount] – Sales amount
- Sales[Region] – Region name
First, create a basic total sales measure:
Total Sales = SUM ( Sales[Amount] )
Now create a measure for Today’s Sales:
Today Sales =
CALCULATE (
[Total Sales],
'Date'[Date] = TODAY()
)

What this does:
CALCULATEchanges the filter context.- ‘Date'[Date] = TODAY() filters the Date table down to the current date.
- Then Total Sales is recalculated for that filtered date only.
Use this measure in a Card visual labeled “Today’s Sales”. Combine it with other visuals like a Clustered column chart to show daily sales trends. If you want to control cross-filtering behavior, especially when using slicers, you may want to explore cross filter direction in Power BI as explained here: Power BI cross filter direction.
Power BI DAX TODAY() Example: Calculate Current Month Sales (MTD)
A very common requirement is to show Month-to-Date (MTD) values that update automatically as the month progresses.
Assuming you already have a Total Sales measure and a Date table, you can write:
Current Month Sales (MTD) =
CALCULATE (
[Total Sales],
DATESMTD ( 'Date'[Date] )
)
Under the hood, DATESMTD generates all dates from the first day of the current month up to TODAY(), based on the current filter context.
You can then:
- Show this on a Card for “Current Month Sales”.
- Plot a Line chart with Date[Date] on the axis and [Total Sales] as the value to show daily trends.
- Use a Date Slicer for interactive filtering. Learn more about Date slicers here: Power BI date slicer.

Power BI DAX TODAY() Example: Calculate Last 7 Days Sales
Many dashboards show “Last 7 days” or “Last 14 days” performance. You can create a measure that uses TODAY() to calculate that range.
Last 7 Days Sales =
CALCULATE (
[Total Sales],
FILTER (
ALL ( 'Date'[Date] ),
'Date'[Date] >= TODAY () - 6
&& 'Date'[Date] <= TODAY ()
)
)
Explanation:
- ALL(‘Date'[Date]) removes existing filters from the date column.
- The FILTER function keeps rows where date is between TODAY()-6 and TODAY().
- That means 7 days in total (including today).
You can show this in a Card and compare it with previous periods using additional measures. For more examples of filtering data between dates, visit this article on Power BI filter between two dates.

Pro Tip:
In my experience, using explicit date ranges like this gives you more control than relying only on slicers, especially when building executive summary pages where the time context must be fixed (“Last 7 days” regardless of slicer changes).
Power BI DAX TODAY() Example: Filter Current Year Data
Another common scenario is to show Current Year data without manually changing filters every January.
Create a Current Year Sales measure:
Current Year Sales =
CALCULATE (
[Total Sales],
YEAR ( 'Date'[Date] ) = YEAR ( TODAY () )
)
Here you are comparing the year part of each date with the year of TODAY(). This keeps your report always on the current year.
Pair this with a Column chart or Line chart that shows monthly totals. If you want to limit data to current year plus maybe the previous year for comparison, you can combine this with additional filters or use techniques similar to those explained in filter current year data using Power BI DAX.

Power BI DAX TODAY() Example: Find Overdue Tasks
Let’s take a project tracking dataset:
- Tasks[TaskName]
- Tasks[DueDate]
- Tasks[Status]
You want to show how many tasks are overdue as of today. Create a calculated column:
Is Overdue =
IF (
Tasks[Status] <> "Completed"
&& Tasks[DueDate] < TODAY (),
1,
0
)

Then create a measure:
Overdue Tasks =
SUM ( Tasks[Is Overdue] )
Use this measure in a Card labeled “Overdue Tasks”, and maybe a Table visual that lists task names and due dates filtered where Is Overdue = 1. This pattern is similar to how you might use boolean flags and counts in other Power BI DAX scenarios, such as counting records with multiple conditions as shown in Power BI DAX count data with multiple filter conditions.

Power BI DAX TODAY() Example: Compare Today vs Yesterday Sales
Management often wants to see Today vs Yesterday comparisons for quick performance checks.
Create a measure for Yesterday’s Sales:
Yesterday Sales =
CALCULATE (
[Total Sales],
'Date'[Date] = TODAY () - 1
)
Then create a difference measure:
Difference Today vs Yesterday =
[Today Sales] - [Yesterday Sales]
And a percentage change:
Today vs Yesterday % =
DIVIDE (
[Difference Today vs Yesterday],
[Yesterday Sales]
)
Use a Multi-row card or Table visual to show:
- Today Sales
- Yesterday Sales
- Difference
- Today vs Yesterday %

For better formatting of percentage or decimals, you can also explore how to convert decimal to text in Power BI, which helps when building more readable KPI cards.
Use Power BI TODAY() Function with Date Slicers
Sometimes you want your Date slicer to default to today but still allow the user to change it.
One pattern is:
- Create a measure that returns
TODAY(). - Use Relative date slicer in Power BI (e.g., “Last 1 day”).
- Pair this with other relative periods like “This month”, “This year”.
If you are working with date hierarchies (Year, Quarter, Month, Day), it is important to understand how Power BI handles the auto hierarchy. This topic is explained well in this guide: Date hierarchy in Power BI.
Pro Tip:
I usually avoid using auto date/time hierarchies in complex models and rely on a custom Date table instead. It gives more control over howTODAY()behaves with year, month, and custom fiscal periods.
Troubleshoot the Power BI DAX TODAY() Function
Sometimes TODAY() does not seem to match what you expect on the report. Here are a few typical issues:
- Different time zones: The Power BI Service runs in UTC by default. If your business works in a different time zone, the date may roll over earlier or later than expected.
- Data refresh timing: If your dataset refreshes once at midnight,
TODAY()updates only after refresh. If you open the report later in the day,TODAY()reflects that refresh date, not the live clock, unless you refresh again. - Filter context: Your
TODAY()measure may be insideCALCULATEwith other filters that unintentionally override your date filters.
If you are hitting broader DAX filter issues (like filters not applying correctly), you might find this article helpful: Power BI DAX filter based on condition.
Power BI DAX TODAY() Best Practices
- Use measures, not columns, for TODAY():
Measures respond to filter context and refresh cycles; usingTODAY()in calculated columns often leads to stale values after refresh. - Always use a Date table:
A dedicated Date table with a relationship to your fact tables makes date calculations predictable and alignsTODAY()with all other time intelligence measures. - Beware of time zone differences:
When deploying to Power BI Service, remember thatTODAY()follows the service/server time, which may differ from your local time. - Avoid hard-coded date filters:
CombiningTODAY()with relative date ranges (last 7 days, current month, current year) is better than using fixed date filters in visuals. - Limit visuals for performance:
Don’t scatter too many date-heavy visuals (especially with complexFILTERplusTODAY()) on one page as it can slow down your report; try to keep key metrics in focused pages. - Test with sample data:
TestTODAY()behavior using small test tables before pushing into production dashboards, especially for scenarios like overdue tasks, SLA monitoring, or daily KPIs.
Frequently Asked Questions (FAQ)
How does the Power BI DAX TODAY() function work?
The TODAY() function returns the current date without any time component. It evaluates at the time of dataset refresh or when you run it in Power BI Desktop. You can use it in measures, calculated columns, and calculated tables, though measures are usually preferred for dynamic reporting.
Why is TODAY() showing yesterday’s date in Power BI Service?
This usually happens due to time zone differences or refresh timing. The Power BI Service may be using UTC, which can be behind or ahead of your local time. Also, TODAY() only updates when the dataset refresh runs; if the last refresh happened before midnight in your local time, the date might still appear as yesterday.
Should I use TODAY() in a calculated column or a measure?
In most cases, use TODAY() in a Measure. Calculated columns are computed during data load and do not change until the next refresh. Measures recalculate every time a user interacts with the report, making them better suited for KPIs, date filters, and dynamic comparisons.
How can I use TODAY() to filter current year data?
You can combine TODAY() with functions like YEAR in a CALCULATE expression. For example, YEAR(‘Date'[Date]) = YEAR(TODAY()) keeps rows from the current year. If you want a complete walkthrough of current year filtering, you can follow the pattern from filter current year data using Power BI DAX.
What is the difference between TODAY() and NOW() in Power BI DAX?
TODAY() returns only the date, while NOW() returns both date and time. If you only care about the calendar day (e.g., today’s sales, overdue tasks), TODAY() is usually enough. Use NOW() when you need time-sensitive calculations such as hourly metrics or “last refresh time” displays.
Can I combine TODAY() with other date filters like last N days?
Yes, and this is one of the most powerful uses of TODAY(). You can use TODAY() inside FILTER expressions to build ranges like Date >= TODAY()-6 && Date <= TODAY(). For more patterns on date ranges, take a look at this guide on filter last N days data using Power BI DAX.
This article walked through what Power BI DAX TODAY() does, how to use it with a proper Date table, and how to build real-world measures like today’s sales, current month, last 7 days, current year, and overdue tasks. The best approach is to treat TODAY() as a building block for dynamic, self-updating KPIs rather than a standalone feature, so always combine it with structured DAX patterns and clean data models. I hope you found this article helpful.
You may also like:
- Power BI date slicer between a default to today
- Sort Slicer By Measure in Power BI
- Power BI date slicer only shows dates with data
- Power BI DAX date filter not working – common fixes
- Power BI DAX MIN date and MAX date examples
- Power BI row-level security vs object-level security

Hey! I’m Bijay Kumar, founder of SPGuides.com and a Microsoft Business Applications MVP (Power Automate, Power Apps). I launched this site in 2020 because I truly enjoy working with SharePoint, Power Platform, and SharePoint Framework (SPFx), and wanted to share that passion through step-by-step tutorials, guides, and training videos. My mission is to help you learn these technologies so you can utilize SharePoint, enhance productivity, and potentially build business solutions along the way.