Odata v.4 $filter for the DateTime Calendar Events

2019-09-02 01:55发布

I am trying to get and filter Calendar events from the Office 365 REST API with the following query:

https://outlook.office.com/api/v2.0/users/user@user.com/calendars/AAAAAAAAAAA/events?$top=100&$select=BodyPreview&$filter=Start ge 2016-02-10T22:00:00Z

So I want 100 results with only the BodyPreview as return value for all Events greater than 2016-02-10 22:00:00.

The Error Message I receive is this one:

ERROR request returned 400
error:
code: 'RequestBroker-ParseUri',
message: 'A binary operator with incompatible types was detected. Found operand types \'Microsoft.OutlookServices.DateTimeTimeZone\' and \'Edm.DateTimeOffset\' for operator kind \'GreaterThanOrEqual\'.'

The query without the filter option works flawlessly. So how do I get my query to represent a 'Microsoft.OutlookServices.DateTimeTimeZone' type?

I had a look at this post: Odata $filter for the date in the Office 365 REST API

But I can not see the difference between my query and the one in the post.

And all examples on https://msdn.microsoft.com/en-us/office/office365/api/complex-types-for-mail-contacts-calendar do not mention this type of DateTimeTimeZone query in the examples.

I also tried this query format:

datetime'2016-01-10T22:00:00'

Also no luck. Any ideas?

1条回答
萌系小妹纸
2楼-- · 2019-09-02 02:20

The type for Start and End changed in the beta and v2 endpoints. It's now a complex type, so you need to change your filter a bit:

$filter=Start/DateTime ge 2016-02-10T22:00:00Z
查看更多
登录 后发表回答