DATESYTD DAX Function (Time Intelligence) Context Transition
Returns a set of dates in the year up to the last date visible in the filter context.
Syntax
| Parameter | Attributes | Description |
|---|---|---|
| Dates |
The name of a column containing dates, a single column table containing dates, or a calendar reference. |
|
| YearEndDate | Optional |
End of year date. |
Return values
For a date column, a table containing a single column of date values. For a calendar, a table containing the primary column of each calendar category and the time-related columns.
Notes
In order to use any time intelligence calculation, you need a well-formed date table. The Date table must satisfy the following requirements:
- All dates need to be present for the years required. The Date table must always start on January 1 and end on December 31, including all the days in this range. If the report only references fiscal years, then the date table must include all the dates from the first to the last day of a fiscal year. For example, if the fiscal year 2008 starts on July 1, 2007, then the Date table must include all the days from July 1, 2007 to June 30, 2008.
- There needs to be a column with a DateTime or Date data type containing unique values. This column is usually called Date. Even though the Date column is often used to define relationships with other tables, this is not required. Still, the Date column must contain unique values and should be referenced by the Mark as Date Table feature. In case the column also contains a time part, no time should be used – for example, the time should always be 12:00 am.
- The Date table must be marked as a date table in the model, in case the relationship between the Date table and any other table is not based on the Date.
Remarks
The dates argument can be any of the following:
- A reference to a date/time column. In this case, a context transition applies because the column reference is replaced by
- CALCULATETABLE ( DISTINCT ( <Dates> ) )
- A table expression that returns a single column of date/time values.
- A Boolean expression that defines a single-column table of date/time values.
- A calendar reference. You define a calendar in the model for calendar-based time intelligence. With a calendar, the result has the primary column of each calendar category and the time-related columns of the calendar. Also in this case, a context transition applies.
The result table includes only dates that exist in the dates column.
With a date column, the syntax:
DATESYTD ( <Dates>[, <YearEndDate>] )
corresponds to:
DATESBETWEEN (
<Dates>,
STARTOFYEAR ( LASTDATE ( <Dates> )[, <YearEndDate>] ),
LASTDATE ( <Dates> )
)
YearEndDate is valid only with a date column. With a calendar, DATESYTD returns an error if you use YearEndDate. The calendar defines the year, for example a fiscal year.
YearEndDate is the last day of the year. If you omit YearEndDate, or if it is BLANK, the year ends on December 31. YearEndDate must be a constant string or a date literal with the dt prefix, for example “6-30”, “06/30”, “June 30”, “2008-06-30″, or dt”2008-06-30”. A variable with a constant string is also valid. An expression like DATE ( 2008, 6, 30 ) or a string concatenation returns an error. DAX ignores the year part.
DAX reads the YearEndDate string with the locale of the model. The YYYY-MM-DD format does not depend on the locale. With other formats, a day that is not valid can change the result without an error. For example, with “6-31” the year ends on June 1.
Do not use February 29 in YearEndDate. With “2-29”, the year ends on February 1. With “2020-02-29”, some years start on March 2 instead of March 1. Use February 28: in a leap year, February 29 is then the first day of the next year.
With a calendar, the last date of the result depends on the columns that the filter context filters:
- If the filter context filters the column tagged as Day, the result ends with the last visible day.
- If the filter context filters a column of another category, for example a week or a month column, the result ends with the last day of the last visible period of that category. The result does not go past the end of the year.
- If the filter context filters only columns that no calendar tags, for example the day of the week, the result has all the days of the year that includes the last visible date.
For example, with a filter on the DateKey column from August 1 to August 13, 2008, DATESYTD ( Gregorian ) returns January 1 to December 31, 2008, and DATESYTD ( ‘Date'[Date] ) returns January 1 to August 13, 2008. With a date column, the result always ends with the last visible date.
If the filter context filters a column that another calendar tags as Week, a calendar without the Week category returns an error.
With a calendar, CALCULATE removes only the filters on the columns of the calendar. The filters on the other columns of the date table stay, for example a filter on the day of the week. With the date column of a table marked as a date table, CALCULATE removes all the filters on the date table.
This function is not supported in DirectQuery mode when used in calculated columns or row-level security (RLS) rules.
» 3 related functions
Examples
-- DATESYTD returns the dates from the first day of the currently selected
-- year to the last date visible in the filter context.
EVALUATE
CALCULATETABLE (
DATESYTD ( 'Date'[Date] ),
'Date'[Date] = DATE ( 2007, 5, 12 )
)
ORDER BY [Date] ASC
| Date |
|---|
| 2007-01-01 |
| 2007-01-02 |
| … |
| 2007-05-11 |
| 2007-05-12 |
-- If the selection contains larger periods, it returns the YTD using
-- the end of the entire period.
-- The result is always a single-column table.
EVALUATE
CALCULATETABLE (
DATESYTD ( 'Date'[Date] ),
'Date'[Date] >= DATE ( 2007, 2, 5 )
&& 'Date'[Date] <= DATE ( 2007, 5, 12 )
)
ORDER BY [Date] ASC
| Date |
|---|
| 2007-01-01 |
| 2007-01-02 |
| … |
| 2007-05-11 |
| 2007-05-12 |
-- All time intelligence functions are designed to return a table
-- to be easily used in CALCULATE as a filter.
EVALUATE
{
CALCULATE (
CALCULATE (
[Sales Amount],
DATESYTD ( 'Date'[Date] ) -- 2007-01-01 : 2007-05-12
),
'Date'[Date] = DATE ( 2007, 5, 12 )
)
}
| Value |
|---|
| 4,038,742.76 |
-- This example shows the sales of the current month, and both the
-- quarter-to-date and year-to-date sales.
DEFINE
MEASURE Sales[Sales QTD] =
CALCULATE (
[Sales Amount],
DATESQTD ( 'Date'[Date] )
)
MEASURE Sales[Sales YTD] =
CALCULATE (
[Sales Amount],
DATESYTD ( 'Date'[Date] )
)
EVALUATE
SUMMARIZECOLUMNS (
'Date'[Calendar Year Month Number],
'Date'[Calendar Year Month],
"Sales Amount", [Sales Amount],
"Sales QTD", [Sales QTD],
"Sales YTD", [Sales YTD]
)
ORDER BY [Calendar Year Month Number]
| Calendar Year Month Number | Calendar Year Month | Sales Amount | Sales QTD | Sales YTD |
|---|---|---|---|---|
| 200701 | 2007-01-01 | 794,248.24 | 794,248.24 | 794,248.24 |
| 200702 | 2007-02-01 | 891,135.91 | 1,685,384.15 | 1,685,384.15 |
| 200703 | 2007-03-01 | 961,289.24 | 2,646,673.39 | 2,646,673.39 |
| 200704 | 2007-04-01 | 1,128,104.82 | 1,128,104.82 | 3,774,778.20 |
| … | … | … | … | … |
| 200909 | 2009-09-01 | 709,610.40 | 2,613,714.44 | 6,931,979.13 |
| 200910 | 2009-10-01 | 806,738.22 | 806,738.22 | 7,738,717.35 |
| 200911 | 2009-11-01 | 868,164.01 | 1,674,902.23 | 8,606,881.36 |
| 200912 | 2009-12-01 | 746,933.50 | 2,421,835.73 | 9,353,814.87 |
-- YearEndDate defines the last day of the year. It is valid only with a date column.
-- The fiscal year in this example ends on June 30.
-- DAX ignores the year part of YearEndDate.
-- The YYYY-MM-DD format does not depend on the locale of the model.
DEFINE
MEASURE Sales[Sales YTD] =
CALCULATE ( [Sales Amount], DATESYTD ( 'Date'[Date] ) )
MEASURE Sales[Sales Fiscal YTD] =
CALCULATE ( [Sales Amount], DATESYTD ( 'Date'[Date], "2008-06-30" ) )
EVALUATE
SUMMARIZECOLUMNS (
'Date'[Calendar Year Month Number],
'Date'[Calendar Year Month],
TREATAS ( { 2008 }, 'Date'[Calendar Year Number] ),
"Sales Amount", [Sales Amount],
"Sales YTD", [Sales YTD],
"Sales Fiscal YTD", [Sales Fiscal YTD]
)
ORDER BY 'Date'[Calendar Year Month Number]
| Calendar Year Month Number | Calendar Year Month | Sales Amount | Sales YTD | Sales Fiscal YTD |
|---|---|---|---|---|
| 200801 | January 2008 | 656766.6933000056 | 656766.6932999999 | 6273437.405399996 |
| 200802 | February 2008 | 600079.9967000037 | 1256846.69 | 6873517.402099994 |
| 200803 | March 2008 | 559538.5207000059 | 1816385.2106999995 | 7433055.922799994 |
| 200804 | April 2008 | 999667.1702999871 | 2816052.380999999 | 8432723.093099995 |
| 200805 | May 2008 | 893231.9579999952 | 3709284.3390000006 | 9325955.051099997 |
| 200806 | June 2008 | 845141.602999991 | 4554425.942 | 10171096.654099999 |
| 200807 | July 2008 | 890547.4079999956 | 5444973.35 | 890547.4080000002 |
| 200808 | August 2008 | 721560.9540000001 | 6166534.3040000005 | 1612108.3619999997 |
| 200809 | September 2008 | 963437.2279999893 | 7129971.532000001 | 2575545.59 |
| 200810 | October 2008 | 719792.9919999922 | 7849764.523999997 | 3295338.581999999 |
| 200811 | November 2008 | 1156109.3224999844 | 9005873.846499994 | 4451447.904499998 |
| 200812 | December 2008 | 921709.1419999992 | 9927582.988499995 | 5373157.046499997 |
-- With a calendar, DATESYTD uses the years of that calendar.
-- Gregorian and Weekly 445 are calendars defined on the Date table.
-- In Weekly 445, the year ends on the Saturday nearest to December 31.
-- The 445 year 2008 ends on January 3, 2009.
DEFINE
MEASURE Sales[Sales YTD] =
CALCULATE ( [Sales Amount], DATESYTD ( Gregorian ) )
MEASURE Sales[Sales YTD 445] =
CALCULATE ( [Sales Amount], DATESYTD ( 'Weekly 445' ) )
EVALUATE
SUMMARIZECOLUMNS (
'Date'[Date],
DATESBETWEEN ( 'Date'[Date], DATE ( 2008, 12, 30 ), DATE ( 2009, 1, 5 ) ),
"Sales Amount", [Sales Amount],
"Sales YTD", [Sales YTD],
"Sales YTD 445", [Sales YTD 445]
)
ORDER BY 'Date'[Date]
| Date | Sales Amount | Sales YTD | Sales YTD 445 |
|---|---|---|---|
| 2008-12-30 | 19567.48800000001 | 9899727.428500002 | 9965915.216000004 |
| 2008-12-31 | 27855.56000000001 | 9927582.988500003 | 9993770.776000004 |
| 2009-01-01 | 21499.032999999996 | 21499.032999999996 | 10015269.809000004 |
| 2009-01-02 | 17288.694000000014 | 38787.72700000001 | 10032558.503000004 |
| 2009-01-03 | 25744.810499999974 | 64532.53749999999 | 10058303.313500002 |
| 2009-01-04 | 30151.194999999974 | 94683.73249999995 | 30151.194999999974 |
| 2009-01-05 | 13984.200000000003 | 108667.93249999997 | 44135.394999999975 |
Related articles
Learn more about DATESYTD in the following articles:
-
Time Intelligence in Power BI Desktop
In Power BI Desktop (as of February 2016) you have to use DAX to apply calculations over dates (such as year-to-date, year-over-year, and others), but you do not have the Mark as Date Table feature. This article describes which scenarios are impacted and the possible workarounds. » Read more
-
International year_end_date for YTD functions in DAX
If you used the DATESYTD and TOTALYTD functions in DAX, you might have noticed that the optional parameter year_end_date is a string defining the last day of the year. This article describes what are the formats allowed in that parameter. » Read more
-
Year-to-date filtering weekdays in DAX
Time intelligence functions oftentimes hide an automatic ALL statement meant to make time intelligence calculations easier. This article describes this behavior and what to do in case it ends up breaking your calculation. » Read more
-
Optimizing time intelligence in DirectQuery
This article describes how to optimize time intelligence calculations with DirectQuery over SQL in Power BI by avoiding time intelligence DAX functions. » Read more
-
DAX and semantic models announcements at the Fabric Conference 2025
I usually do not write about announcements and new features until we have had time to try and test them in the real world. However, there are always exceptions, and some of the announcements at the Microsoft Fabric Conference 2025 fall into this category because I have worked with them enough to provide hands-on feedback. In short, these are the topics I am covering in this blog post: Direct Lake and Import mode Calendars in DAX User Defined Functions (UDF) in DAX Direct Lake and Import mode One year ago, after two conferences where the announcement of Direct Lake was… » Read more
-
Filtering weekdays in DAX
When using time intelligence functions, the automatic REMOVEFILTERS on Date can make maintaining filters on the Date table challenging. This article shows a technique to handle filter-preserving columns in DAX. » Read more
-
Introducing calendar-based time intelligence in DAX
This article introduces the new calendar-based time intelligence functions in DAX, available in preview from the September 2025 release of Power BI. » Read more
Related functions
Other related functions are:
Last update: Nov 10, 2026 » Contribute » Show contributors
Contributors: Alberto Ferrari, Marco Russo
Microsoft documentation: https://learn.microsoft.com/en-us/dax/datesytd-function-dax