Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
6 years ago
Solved

Fixed Date, Dynamic Year - Date Filtering Woes

Hello!

 

It's me again with another date conundrum.

 

What I want to do is filter a range of data based on its date.  For example, I want to filter out anything from 1st April of the previous year.  So for 2020 that would be 1st April 2019 and for 2021, this would be 1st April 2020.

 

I can easily do this with a fixed date, but I have struggled to make this dynamic.

 

I have tried the following but get an error about not passing through a date value: -

#"Filtered Rows" = Table.SelectRows(#"Changed Type", each [Date] >= Date.From(Date.AddMonths(Date.StartOfYear(DateTime.LocalNow)),-9))

 

In my mind, I'm asking it to filter out anything that is less than equal to the start of today's year minus 9 months.  E.g. 1st April 2019.

 

If anyone can shed some light on this for me, I would be much obliged.

  • Anonymous - Try ditching your Date.From, I don't see why you need that. Also, you need () on your .LocalNow

     

    #"Filtered Rows" = Table.SelectRows(#"Changed Type", each [Date] >= Date.AddMonths(Date.StartOfYear(DateTime.LocalNow())),-9)

4 Replies

  • Anonymous's avatar
    Anonymous
    Not applicable

    Exact error message: -

     

    Expression.Error: The Date value must contain the Date component.
    Details:
    [Function]

    • Greg_Deckler's avatar
      Greg_Deckler
      Community Champion

      Anonymous - Try ditching your Date.From, I don't see why you need that. Also, you need () on your .LocalNow

       

      #"Filtered Rows" = Table.SelectRows(#"Changed Type", each [Date] >= Date.AddMonths(Date.StartOfYear(DateTime.LocalNow())),-9)

      • Anonymous's avatar
        Anonymous
        Not applicable

        Thanks, Greg_Deckler - I always struggle with the date/datetime/datetimezone fields!

         

        I've tried what you have suggested but now get: -

        Expression.Error: 3 arguments were passed to a function which expects 2.
        Details:
        Pattern=
        Arguments=[List]

         

        Then I realised there were not enough brackets (or not in the right place) and get: -

         

        Expression.Error: We cannot apply operator < to types DateTime and Date.
        Details:
        Operator=<
        Left=01/10/2019 00:00:00
        Right=21/08/2019