Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

OData query filter for dateTime range

Tags:

odata

breeze

I have a DateTime property in the data returned by a service that looks like "SDateTime":"2014-06-29T03:30:00.000".

I need to write a query to get a collection which has the date less than "2014-06-26T03:30:00.000" and greater than "2014-06-23T03:30:00.000"

How to write a filter for the dateTime?

Thanks.

like image 915
user2439903 Avatar asked Jun 30 '14 11:06

user2439903


3 Answers

In OData V4 date filtering format has changed, the correct filter will be

$filter=SDateTime gt 2014-06-23T03:30:00.000Z and SDateTime lt 2014-06-26T03:30:00.000Z

For example

http://services.odata.org/V4/OData/OData.svc/Products?%24filter=ReleaseDate%20gt%201995-09-01T00:00:00Z%20and%20ReleaseDate%20lt%201995-12-01T00:00:00Z

For previous versions of OData see previous answer

like image 155
avitenberg Avatar answered Sep 21 '22 17:09

avitenberg


$filter=SDateTime gt datetime'2014-06-26T03:30:00.000' and SDateTime lt datetime'2014-06-23T03:30:00.000'

It works in this service: http://services.odata.org/V3/OData/OData.svc/Products?$filter=ReleaseDate%20gt%20datetime%271995-09-01T00:00:00%27%20and%20ReleaseDate%20lt%20datetime%271995-12-01T00:00:00%27

like image 36
Tan Jinfu Avatar answered Sep 20 '22 17:09

Tan Jinfu


Breeze will automatically construct an OData filter under the covers for any query. So to query for a date will look something like this in Breeze.

var query = new EntityQuery("Orders")
        .where("orderDate", ">", new Date(1998, 3, 1));
like image 39
Jay Traband Avatar answered Sep 19 '22 17:09

Jay Traband