创建一个带有SharePoint列值字段的CAML查询-SharePoint 2010



我有一个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

我自己还没试过呢

相关内容

  • 没有找到相关文章

最新更新