2

我列表中的标题列仅包含年份。我想制作一个视图,我只会显示最近 3 年。

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

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

我试图在这里使用<Today>具有属性的元素来获取一些东西Offset,但没有运气 - 它不是 DateTime 值,而只是一个数字。

这里怎么写过滤条件?

4

2 回答 2

2

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

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

如果可能,我会建议创建一个真正的仅日期字段并使用它(并且可能只显示基于该值的计算字段)。

于 2012-06-18T18:34:36.067 回答
1

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

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

Offset="-1095" 的方法也可能有效,但我认为在计算字段中减去年份值会更好。此外,如果需要,您始终可以使您的计算字段在视图表单上不可见。

于 2012-06-18T17:53:04.957 回答