When you query a SharePoint calendar your results will contain:
- All non-recurring events
- The first event of a recurring event series
And won’t contain:
- All remaining events in recurring event series’
Here is the CAML you need to execute to retrieve all events, including all events in recurring event series:
<listname>My Calendar</listname>
<query>
<Query>
<Where>
<DateRangesOverlap>
<FieldRef Name=”EventDate”></FieldRef>
<FieldRef Name=”EndDate”></FieldRef>
<FieldRef Name=”EventDate”></FieldRef>
<Value Type=”DateTime”>
<Year />
</ValueType>
</DateRangesOverlap>
</Where>
</Query>
</query>
<queryOptions>
<QueryOptions>
<RecurrencePatternXMLVersion>v3</RecurrencePatternXMLVersion>
<ExpandRecurrence>
</QueryOptions>
</queryOptions>
<viewFields>
<FieldRef Name=”EventDate” />
<FieldRef Name=”EndDate” />
<FieldRef Name=”fRecurrence” />
<FieldRef Name=”RecurrenceData” />
</viewFields