我有一个SharePoint列表。它有两列开始日期和结束日期。 我需要查询并获取数据if(开始日期+ 7天>结束日期)。 通过CAML构建器,不可能在值节点上具有SharePoint列并构建查询。 任何的想法? 我试过下面的。但是没有工作。
<Query>
<Where>
<Eq>
<FieldRef Name='EndDate' />
<Value IncludeTimeValue='TRUE' Type='DateTime'><StartDate+7/></Value>
</Eq>
</Where>
</Query>
答案 0 :(得分:1)
您无法在CAML查询中将两个项目字段相互比较。您可以创建计算字段并在其中进行比较,也可以使用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;
答案 1 :(得分:0)
你应该使用GeQ,LeQ而不是EQ http://social.msdn.microsoft.com/Forums/sharepoint/en-US/fed59f8e-72e2-46e2-9329-460fd65d7536/caml-query-datetime?forum=sharepointdevelopmentlegacy
https://sharepoint.stackexchange.com/questions/15770/caml-query-with-date-range
我没有尝试过,我自己。
答案 2 :(得分:0)
我建议创建一个计算列以计算开始日期和结束日期之间的差额:
= DATEDIF([创建],[结束日期],“ d”)
,然后在您的camlquery过滤器中进行大于或等于7天的
<Query>
<Where>
<Geq>
<FieldRef Name="DateDiff"/>
<Value IncludeTimeValue='TRUE' Type='Number'>7<Value>
</Geq>
</Where>
</Query>