CAML查询检索sharepoint日历中的日期范围

时间:2013-10-01 09:14:32

标签: c# sql sharepoint caml

我正在使用CAML查询来检索一系列日期中的事件。 目前,只要日期范围内有事件,它就不会检索任何事件

我的CAML查询有问题吗?当我拿走查询行时,它可以检索所有事件

这是我的代码:

DateTime todayDate = DateTime.Now.Date; 

DateTime tomorrowDate = todayDate.AddDays(1);
tomorrowDate = tomorrowDate.AddSeconds(-1);

query.Query = "<Query><Where><And><Geq><FieldRef Name=\"StartTime\" /><value IncludeTimeValue=\"true\" type=\"DateTime\">" + todayDate + "</value></Geq><leq><FieldRef Name=\"EndDate\"/><Value IncludeTimeValue=\"true\" Type=\"DateTime\">" + tomorrowDate + "</value></leq></And></Where><Query>";
query.ExpandRecurrence = true; 

query.ViewFields = @"<FieldRef Name='Title' /><FieldRef Name='EventDate' /><FieldRef Name='EndDate' />";

SPListItemCollection items = list.GetItems(query);

foreach (SPListItem listItem in items)
{
    retrievedData.Add(listItem["Title"].ToString());
    retrievedData.Add(listItem["EventDate"].ToString());
    retrievedData.Add(listItem["EndDate"].ToString());
}

1 个答案:

答案 0 :(得分:0)

您的查询包含元素valueleq包含错误的大小写。正确的大小是ValueLeq(请参阅this)。您还在查询中使用不正确的日期格式。您必须使用SPUtility.CreateISO8601DateTimeFromSystemDateTime方法将日期格式化为字符串(请参阅this)。另请在FALSE/TRUE属性中使用false/true代替IncludeTimeValue