Фильтр запросов OData для диапазона dateTime
У меня есть свойство DateTime в данных, возвращаемых службой, которая выглядит как
"SDateTime":"2014-06-29T03:30:00.000"
.
Мне нужно написать запрос, чтобы получить коллекцию с датой меньше, чем "2014-06-26T03: 30: 00.000" и больше, чем "2014-06-23T03: 30: 00.000"
Как написать фильтр для dateTime?
Благодарю.
Ответы
Ответ 1
$filter = SDateTime gt datetime'2014-06-26T03: 30: 00.000 'и SDateTime lt datetime'2014-06-23T03: 30: 00.000'
Он работает в этой службе: 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
Ответ 2
В OData V4 формат фильтрации даты был изменен, правильный фильтр будет
$filter=SDateTime gt 2014-06-23T03:30:00.000Z and SDateTime lt 2014-06-26T03:30:00.000Z
Например,
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
Предыдущие версии OData см. в предыдущем ответе.
Ответ 3
Breeze автоматически создаст фильтр OData под обложками для любого запроса. Таким образом, запрос на дату будет выглядеть примерно так на Бризе.
var query = new EntityQuery("Orders")
.where("orderDate", ">", new Date(1998, 3, 1));