cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Ajh
Advocate II
Advocate II

SQL GetRows OData Date Filter

I don't understand how to filter on datetime columns in MS Flow / Power Automate. This should be one of the easiest filters to apply... 

 

This page includes an example with pictures, but when replicated does not work:

 

 

 

WorkOrderCreatedTime gt addDays(utcnow('yyyy-MM-ddTHH:mm:ssZ'),-30)

 

 

 

Spam filter I think is triggering on my links sorry for the funky format:

 

 https://www.odata.org/documentation/odata-version-2-0/uri-conventions/ 

 

Note: One of the comments states that it should be surrounded in single quotes, but that also does not appear to work

SQLWorkOrderFilter

 

This page states that the filter criteria for a date/datetime should be surrounded in single quotes and preceded by the word datetime, but this does not appear to work.

 

 

 

 

 

DateTime values must be delimited by single quotation marks and preceded by the word datetime, such as datetime'2010-01-25T02:13:40.1374695Z'.

 

 

 

 

Spam filter I think is triggering on my links sorry for the funky format:

 

 

https://docs.microsoft.com/en-us/previous-versions/dynamicsnav-2016/hh169248(v=nav.90) 

 

 

Doing year(X) and month(X) etc is not an acceptable solution as it will not work if querying data older than 1 calendar year. 

Here are screen shots of things I've tried that don't work (StormDate is my datetime column). Successful response is included at the bottom to demonstrate the format of the response when I leave this particular filter off.

 

  • StormDate gt '2020-02-01T16:38:07.0000000Z'
  • StormDate gt 2020-02-01T16:37:41.0000000Z
  • StormDate gt '2020-12-12T11:11:11Z'
  • StormDate gt '2020-01-01T00:00:00Z'
  • StormDate gt '2020-01-01T00:00:00.000Z'
  • StormDate gt '2020-01-01T00:00:00.00Z'
  • StormDate gt 2020-01-01T00:00:00.00Z
  • StormDate gt datetime'2020-01-01T00:00:00.000Z'

They pretty much all end like this:

 

image.png

Here's a successful response where I leave the filter off:

image.png

52 REPLIES 52
Ajh
Advocate II
Advocate II

Correct see my reply where I @'d you from Friday ~9:44 AM. There is a screenshot where the flow is successful. You commented that the response was empty, but that's OK, there wasn't any data on that specific day in my system. But the important thing was that the filter worked and didn't throw the JSON error, whereas using ge/gt throws the JSON error.

abm
Super User
Super User

Hi @Ajh 

 

Thanks for your reply.

 

StormDate eq '2020-03-15 00:00:00'

 

Here is my Sql test data.

 

image.png

 

image.png

 

Here is my test result which resulted in null

 

image.png

 

Yes it didn't complained about syntax error but the actual query did failed to return the correct results.

 

Thanks



Did I answer your question? Mark my post as a solution!

If you liked my response, please consider giving it a thumbs up


Proud to be a Flownaut!

Learn more from my blogPower Automate Video Tutorials
Ajh
Advocate II
Advocate II

Hm interesting! You might check the time zone, the screenshot of your raw data is that in UTC?

abm
Super User
Super User

I believe so. I entered as dd/mm/yyyy format and it stored as yyyy/mm/dd hh:mm:ss format



Did I answer your question? Mark my post as a solution!

If you liked my response, please consider giving it a thumbs up


Proud to be a Flownaut!

Learn more from my blogPower Automate Video Tutorials
Ajh
Advocate II
Advocate II

I think the default is to use your local time zone. try select stormdate, convert(stormdate,127) UTC from table , just to make sure we know what time zone it's in.

abm
Super User
Super User

Using my test data (see my earlier screenshot)  I tried the below query

 

Year(StormDate) ge 2020 and month(StormDate) ge 3 and day(StormDate) gt 15

 

ge - Greater or Equal to

gt - Greater than

 

So I am expecting two results date more than 15

 

I have got two records which is correct.

 
Next changed the query to below
Year(StormDate) ge 2020 and month(StormDate) ge 3 and day(StormDate) ge 15
 
I have got three records which is correct.
 
Could you please tell which data is failing for you when you using the Year, Month and day combination?
 
Thanks
 


Did I answer your question? Mark my post as a solution!

If you liked my response, please consider giving it a thumbs up


Proud to be a Flownaut!

Learn more from my blogPower Automate Video Tutorials
Ajh
Advocate II
Advocate II

I am not using year(), month(), day() notation. That is not an acceptable criteria when querying more than one year of data, it will result in incorrect results. So I'm not even testing that. It will 'work' but the results will not be what is expected.

 

When you use the eq notation '2010-01-01T00:00:00Z' the hour matters, because it is being compared. So if you're not seeing what you expect using that notation, it is most likely because the data is stored in your table in your local time zone, and the flow is using UTC. For instance, my local time zone is UTC-6, meaning if I insert a record into a DB that is set in my time zone for '2020-03-15', it will display correctly when I am querying and browsing around, but in reality the data is stored as UTC-6, meaning it is actually in the system as '2020-03-15T06:00:00'. So querying for eq '2020-03-15T00:00:00' would work but return no results.

Ajh
Advocate II
Advocate II

Using year() month() and day() method, if you were to filter on 2019-03-16, your filter would evaluate to year > 2019, month > 3, and day > 16. You would miss data from jan and february as the months would be less than 3, and you would miss data from all months where day is < 15. So instead of 365 days of data, you'd have something like 100. image.png

abm
Super User
Super User

Hi @Ajh 

 

Yes I did some more tests and found out that year, month, date split not going to work? How about stored procedure?  Did you tried using that?

 

Thanks



Did I answer your question? Mark my post as a solution!

If you liked my response, please consider giving it a thumbs up


Proud to be a Flownaut!

Learn more from my blogPower Automate Video Tutorials
Ajh
Advocate II
Advocate II

I'm not going to create a stored procedure for something that is at the core the most basic functionality of any data manipulation and that is supported by the standard that the documentation points to. This needs to just work. I submitted a help ticket to the MS folks, they are reviewing. Will let you know when I get a response.

abm
Super User
Super User

Hi @Ajh 

 

That's fine. Thanks for your replies. Hopefully this will be resolved soon.

 

Interesting findings 😀

 

Thanks



Did I answer your question? Mark my post as a solution!

If you liked my response, please consider giving it a thumbs up


Proud to be a Flownaut!

Learn more from my blogPower Automate Video Tutorials
abm
Super User
Super User

Hi @Ajh 

 

This worked for me. Tested with Date and it extracts the right records.

 

https://www.svenpauwels.com/microsoft-flow/flow-sql-server-connector-how-to-filter-the-date/

 

Thanks



Did I answer your question? Mark my post as a solution!

If you liked my response, please consider giving it a thumbs up


Proud to be a Flownaut!

Learn more from my blogPower Automate Video Tutorials

View solution in original post

Ajh
Advocate II
Advocate II

JEEEEEZUZ Where did you dig that up!?!?!! It worked!

 

For all those in the future that need to do this, here is the correct syntax:

StormDate ge date(2020-01-01T00:00:00Z)

To get 30 days of data, I did the following expression inside the purple box: 

addDays(utcNow(),-30)

 and so the final thing looks like:

image.png

and evaluates to:

image.png

If anyone from MS ever reads this, PLEASE update your documentation. PLEASE. 

View solution in original post

abm
Super User
Super User

Hi @Ajh 

 

I have got a special search engine 😎 This is one of the post challenged me. I believe it is related to ODATA version. Glad that it did worked for you. Similar test I did earlier and worked perfectly. Thanks to Sven Pauwels for that post.

 

If you have any more questions please post in this community. There are lots of good knowledge here.

 

Thanks



Did I answer your question? Mark my post as a solution!

If you liked my response, please consider giving it a thumbs up


Proud to be a Flownaut!

Learn more from my blogPower Automate Video Tutorials
Ajh
Advocate II
Advocate II

Lol I've been struggling with this for a REALLY long time. Gonna make a big difference in the performance of my flows. Now I need to go back and revisit all of those posts with the stupid loop within a loop work arounds and point them here.

FletchM
Regular Visitor

Wish I'd seen the solution to this yesterday!

 

I ended up finding https://docs.microsoft.com/en-us/odata/webapi/date-and-timeofday-support which helped. They sure do love to make you hunt for information. No idea what version of odata flow/powerautomate even uses.

SteveS1
Regular Visitor

Ok - this has been driving me nuts too..eq in the date filter works fine but gt and ge do not. 

 

is it me?

A bit more clarity. 

I am looking for activity on all dates 30 days before today. 

If I just use 'eq' in the filter all works, if I change to 'ge' or 'gt' than it fails with a bad JSON comment.

 

ScreenHunter_3080 May. 04 17.37.jpg

 

I am using SQL Query in Power Automate to an on premises server. 

 

As follows - 

ScreenHunter_3079 May. 04 17.35.jpg

 

This Fails. 

ScreenHunter_3077 May. 04 17.31.jpg

 

This works.

ScreenHunter_3078 May. 04 17.33.jpg

Any ideas?

Is the column a date or datetime field? I think sometimes the reason it works for eq and not the others is because it treats it like a string it "ABC" = "ABC", but it doesn't quite know how to treat it like a date. I think it has to do with the OData specification they are using in the backend. I suggest you submit a support ticket to microsoft, they did eventually look at mine that was doing something similar to that and I think they fixed it. 

 

image.png

Anonymous
Not applicable

Hello,

 

I still have the same issue as depicted above:

ModifiedDateTime eq '2020-07-01' --> Works fine

ModifiedDateTime ge '2020-07-01' --> Fails with below error

 

2020-08-24 16_42_28-Settings.png

 

I think it may relate to the version of SQL Server I'm using (2008 R2).


Which SQL Version are you using?

 

Thx,

Helpful resources

Announcements
UG GA Amplification 768x460.png

Launching new user group features

Learn how to create your own user groups today!

Community Connections 768x460.jpg

Community & How To Videos

Check out the new Power Platform Community Connections gallery!

M365 768x460.jpg

Microsoft 365 Collaboration Conference | December 7–9, 2021

Join us, in-person, December 7–9 in Las Vegas, for the largest gathering of the Microsoft community in the world.

Top Solution Authors
Users online (2,429)