OData query filter for dateTime range
Asked Answered
C

3

20

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.

Clayborne answered 30/6, 2014 at 11:48 Comment(0)
M
26

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

Milkandwater answered 7/7, 2015 at 19:35 Comment(2)
my API return date like this one '2016-07-30T12:52:16.007'. So how could I cast it properly?Coan
@Coan new Date('2016-07-30T12:52:16.007');Milkandwater
F
24

$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

Furmenty answered 30/6, 2014 at 12:26 Comment(0)
B
4

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));
Bounteous answered 30/6, 2014 at 16:18 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.