在CAML查询中使用部分日期

时间:2012-06-18 15:01:22

标签: sharepoint caml

我的列表中的标题列仅包含年份。我想做一个观点,我只会在过去3年里展示。

我正在尝试在List定义中使用CAML查询:

<Query>
  <Where>
    <Geq>
      <FieldRef Name="Year" />
      <Value Type="Number"> ???? </Value>
    </Geq>
  </Where>
</Query>

我试图使用带有<Today>属性的Offset元素来获取某些内容,但没有运气 - 它不是DateTime值,而只是一个数字。

如何在此处编写过滤条件?

2 个答案:

答案 0 :(得分:2)

由于它不是日期时间值,因此它永远不会与<Today>offset一起使用,因为这些元素会根据查询运行的时刻在内部转换为SQL DateTime值。

您可以创建一个视图,在这里您可以查找2009年以上的任何条目(截至2012年),但每年需要额外的小工作才能适应。

我建议尽可能创建一个真实的日期字段并使用它(并且可能只显示基于该值的计算字段)。

答案 1 :(得分:1)

我建议分两步执行此操作:

  1. 使用此处描述的公式http://msdn.microsoft.com/en-us/library/bb862071.aspx创建DateTime(无时间)类型的计算字段。这将是像这样= DATE(年-3,0,0)
  2. 使用此新列进行查询。像
  3. 这样的东西
    <Geq>
            <FieldRef Name="YearCalculated" />
            <Value Type="DateTime" IncludeTimeValue="FALSE"><Today /></Value>    
    </Geq>
    

    使用Offset =“ - 1095”的方法也可以工作,但我认为在计算字段中减去年份值会更好。另外,如果需要,您可以随时在视图表单上隐藏计算字段。