我有一个SharePoint列表。它有两列开始日期和结束日期。我需要查询和获取数据,如果(开始日期+ 7天>结束日期)。通过CAML构建器,它不可能在值节点上拥有SharePoint列并构建查询。任何想法?我在下面试过。
<Query>
<Where>
<Eq>
<FieldRef Name='EndDate' />
<Value IncludeTimeValue='TRUE' Type='DateTime'><StartDate+7/></Value>
</Eq>
</Where>
</Query>
在CAML查询中不能对item的两个字段进行比较。您可以创建computed字段并在其中进行比较,也可以使用LINQ。像这样:
SPList tasks = SPContext.Current.Web.Lists["tasks"];
var ts = from t in tasks.Items.OfType<SPListItem>() where t["DueDate"] == null || (DateTime)t["Modified"] > (DateTime)t["DueDate"] select t;
我建议创建一个计算列来计算开始日期和结束日期之间的差值:
= DATEDIF([产生],[EndDate],"d")
,然后在您的camlquery过滤器中大于或等于7天
<Query>
<Where>
<Geq>
<FieldRef Name="DateDiff"/>
<Value IncludeTimeValue='TRUE' Type='Number'>7<Value>
</Geq>
</Where>
</Query>
你应该用GeQ, LeQ来代替EQhttp://social.msdn.microsoft.com/forums/sharepoint/en us/fed59f8e - 72 - e2 - 46 - e2 - 9329 - 460 - fd65d7536/caml -查询- datetime?forum=sharepointdevelopmentlegacy
https://sharepoint.stackexchange.com/questions/15770/caml-query-with-date-range我自己还没试过呢