cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
geneZebra
Level 8

does SP's get items filter query support compare on date strings?

I am looking to implement a query  filter in Get Items to compare a date that is stored as strings. The information in the following URL shows how to do this but I need to convert one of terms to be in the proper format

https://powerusers.microsoft.com/t5/Building-Flows/Filter-items-based-on-a-date-filter-query/m-p/202...

 
It seems Flow will not let the SP column name be used in function. Can someone confirm if this it true?
 
Filter Query = "TravelDate lt '@{addDays(utcNow(), -10)}'"  works but the I can not find a way to pass TravelDate into a formatDateTime function to proper compare the dates.
 
Not I am able to get this work with a FilterArray but it adds extra logic to my app. Also I am storing the date as a string to avoid known off by 1 scenarios with powerapps when working with dates.
 
Thanks.
 
1 ACCEPTED SOLUTION

Accepted Solutions
geneZebra
Level 8

Re: does SP's get items filter query support compare on date strings?

I just re-read that article I posted. In there a MS response stated 

"When configuring Filter Query, we can't use Expression to make any modifications to the column"

 

so I guess that's the problem. It's known limitation of the filter. 

 

I'm going to make this closed.

 

Thanks for the help. 

 

View solution in original post

15 REPLIES 15
Super User
Super User

Re: does SP's get items filter query support compare on date strings?

look at converting the text date to a time first, using the expression builder.  

 

Try convertToUtc() or convertTimeZone() if you need it in a different timezone.  Both functions expect a string value for the time/date.  

geneZebra
Level 8

Re: does SP's get items filter query support compare on date strings?

formatDateTime also takes in a string. My issue is I cannot pass in the column name "TravelDate" in as a parameter. The expression editor does not like the way I am referring to "TravelDate" and if I manually enter the expression does not get evaluated and is seen as an invalid expression.

 

That URL I posted shows how a the filter can evaluate a function if it embedded in single quotes. I am thinking that the column name probably cannot be passed into a function unless someone knows the syntax to do that

 

Another approach, could be to convert the result of AddDays to a format that can work for comparisons. The problem with that approach is I am storing the data in MM/DD/YYYY format so so a srtring compare would not work properly. 

 

 

Thanks

Super User
Super User

Re: does SP's get items filter query support compare on date strings?

Some require single quotes around the object.  Have you given that a try?  

 

Note how some parameters need quotes (string) and values dont.  Not sure about dates.

 

image.png

Super User
Super User

Re: does SP's get items filter query support compare on date strings?

geneZebra
Level 8

Re: does SP's get items filter query support compare on date strings?

The URL you refer to is similar to the one I posted. It does not use the column name in my table as an input to function. In that example it is using 

expiry_x0020_date le 'formatDateTime(...)​'

Had my column been formatted in a  date format that is YYYY/MM/DD than I can see the comparion workin but since my sharepoint list is in "MM/DD/YYYY" format and a srtring type, I do not think the compare will evaluate propery. I thnk it comes down to how the data source (sharepoint) compare a text based string to a date. 

I'm going to try it with a couple of test dates but I suspect that unless the column type is date, the comparison will be comparing strings not dates. If I can get the strings in the same format for the filter, then the comparions should work consistently.

 

Thanks.

 

 

Highlighted
Super User
Super User

Re: does SP's get items filter query support compare on date strings?

@geneZebra 

 

I just noticed that the date is stored as a string. 

You can't operate on any of the columns in a list in an OData filter.  In other words, you can't reformat the TravelDate column as part of the OData filter.  

 

Try this as your query:

TravelDate lt 'addDays(utcNow(),-10,'yyyy-MM-dd')'

 

You should not have to reformat TravelDate.  

 

 

If I have answered your question, please mark your post as Solved.
If you like my response, please give it a Thumbs Up.

Scott
geneZebra
Level 8

Re: does SP's get items filter query support compare on date strings?

I wound up using 

"TravelDate lt '@{addDays(utcNow(), -10, 'MM\/dd\/yyyy')}'"  since using dashes resulted in no matches.

In any case, SP is doing a text compare.

- If I use MM as in the format above, the filter evaluates to "TravelDate lt '09/10/2019'"  which returns no records since expressions starts with a 0.

- If I use "addDays(utcNow(), -10, 'M\/dd\/yyyy')", it evaluates to "TravelDate lt '9/10/2019'" and retuns dates with a month starting it an 8 or less. 

 

I read somewhere that there is a 'dateTime' quailifier used on constant dates but I lost the article. I am thinking maybe that can be used on the column Name. I was hoping there was a way to pass in the column name as an expression with @ and {} syntax but it seems the flow editor either doesn't allow it or the filter doesn't allow the column name to be used in formula.

 

I will see if I can find that article that uses a non parenthesized way to express a date but I supect that won't work either. I guess I'll just need to live with "filterArray" and some overhead code if this doesn't work out. 

 

Thanks.

 

 
geneZebra
Level 8

Re: does SP's get items filter query support compare on date strings?

I just re-read that article I posted. In there a MS response stated 

"When configuring Filter Query, we can't use Expression to make any modifications to the column"

 

so I guess that's the problem. It's known limitation of the filter. 

 

I'm going to make this closed.

 

Thanks for the help. 

 

View solution in original post

Super User
Super User

Re: does SP's get items filter query support compare on date strings?

You can use formatdatetime() on expiry_x0020_date as well if it is in text form, in your case.  That will convert your text date into an object that you can pose the inequality.

 

So, for your example (I might not have all of the syntax perfect...):

 

@{formatdatetime('TravelDate','mm/dd/yyyy')} lt '@{formatdatetime(addDays(utcNow(), -10),'mm/dd/yyyy')}'

geneZebra
Level 8

Re: does SP's get items filter query support compare on date strings?

that is what I am looking for. Can you post the syntaxt I use in the get items filter field. the Flow editor either will not let me put the column name in,  or the output does not evalualte it. 

 

 

Super User
Super User

Re: does SP's get items filter query support compare on date strings?

I edited my post... it might not be perfect.  But close.

geneZebra
Level 8

Re: does SP's get items filter query support compare on date strings?

I still cannot get past the runtime error for travelDate. 

 

'@{addDays(utcNow(), -10, 'MM/dd/yyyy')}' ge @{formatdatetime('TravelDate', 'MM/dd/yyyy')}

 

"....function 'formatdatetime', the value provided for date time string 'TravelDate' was not valid. The datetime string must match ISO 8601 format.'."

 

 
Super User
Super User

Re: does SP's get items filter query support compare on date strings?

Oh!  if that is the case... then you can concat() with proper stuff to make it what it needs to be.  There is a way to do this.  Unfortunately, I dont know it well enough to just get it all out there at once.  google the format, and see what it is that does not follow the date format.  you can piece the text together with concat() to get it the way it needs to be.  Sorry this is so itterative.  Maybe someone else with more time doing this can get it closer sooner.  

geneZebra
Level 8

Re: does SP's get items filter query support compare on date strings?

thanks anyway. I also tried concat, it simply sees interperts the col name as string and ignores the value. 

It really looks like the editor does not like any expression that uses the column name in a formula. If I try to use it in a formula without a quote, the popup expression editor says it's invalid and if I try to paste it directly in the action, it won't paste. If I try to type it in manually, it won't save and reports a syntax error.

 

I am going with the column name can not be used in a formula unless I can find a syntax than can somehow get it passed into any formula. 

 

I guess I am going to live with using a filter array (which I use ticks()) in the comparison or I may look into changing the power app to ensure the data content in the list is in 'yyyy/MM/dd' format. If so, a direct string compare should work. 

 

Thanks for trying to help.

 

 

Super User
Super User

Re: does SP's get items filter query support compare on date strings?

It is quite a wild ride trying to match all of the types, formats, and syntaxes involved.  Its odd how "easy" flow and PA are, but yet in some cases, exceedingly complex.  And quite undocumented.

 

Good luck!!

Helpful resources

Announcements
firstImage

Microsoft Business Applications Virtual Launch Event

Watch the event on demand for an in-depth look at the new innovations across Dynamics 365 and the Microsoft Power Platform.

firstImage

Watch Sessions On Demand!

Continue your learning in our online communities.

Power Platform 2019 Release Wave 2 Plan

Power Platform 2019 Release Wave 2 Plan

Features releasing from October 2019 through March 2020.

thirdimage

Flow Community User Group Member Badge

Fill out a quick form to claim your user group badge now!

fifthimage

Microsoft Learn

Learn how to build the business apps that you need.

sixthImage

Power Platform World Tour

Find out where you can attend!

seventhimage

Webinars & Video Gallery

Watch & learn from the Flow Community Video Gallery!

Users Online
Currently online: 386 members 4,352 guests
Please welcome our newest community members: