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

DATESYTD ( <Dates> [, <YearEndDate>] )
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

Table An entire table or a table with one or more columns.

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.
The result of time intelligence functions has the same data lineage as the date column or table provided as an argument.

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
  • 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.

» 7 related articles
» 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

2018-2026 © SQLBI. All rights are reserved. Information coming from Microsoft documentation is property of Microsoft Corp. » Contact us   » Privacy Policy & Cookies

Context Transition

This function performs a Context Transition if called in a Row Context. Click to read more.

Row Context

This expression is executed in a Row Context. Click to read more.

Passed by Expression

This parameter is passed by expression and can be evaluated multiple times in different evaluation contexts.

Iterator

Not recommended

The use of this function is not recommended. See Remarks and Related functions for alternatives.

Not recommended

The use of this parameter is not recommended.

Deprecated

This function is deprecated. Jump to the Alternatives section to see the function to use.

Volatile

A volatile function may return a different result every time you call it, even if you provide the same arguments. Click to read more.

Deprecated

This parameter is deprecated and its use is not recommended.

DirectQuery compatibility

Limitations are placed on DAX expressions allowed in measures and calculated columns.
The state below shows the DirectQuery compatibility of the DAX function.

Contribute

Want to improve the content of DATESYTD? Did you find any issue?
Please, report it us! All submissions will be evaluated for possible updates of the content.