-->

在CAML查询使用日期的一部分(Using part of date in CAML query)

2019-09-18 05:45发布

在我的列表中的标题栏只包含一年。 我想打一个观点,在那里我会只显示最近3年。

我想在列表定义中使用CAML查询:

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

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

如何写在这里过滤条件?

Answer 1:

因为它不是一个时间值,它永远不会与工作<Today>offset ,因为这些元素基于查询的运行时刻在内部转换为SQL datetime值。

你可以创造一个你正在寻找2009年以上的任何条目(如右图2012年)的视图,但将需要额外的小型工程,每年适应。

我建议如果可能的话,以创建一个真正的日期只有场,并与它的工作(也许只显示基于该值计算字段)。



Answer 2:

我建议做这两个步骤:

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

随着接近偏移量=“ - 1095”还可以工作,但我认为,在计算领域从其减去年份值将更好地工作。 另外,你总是可以在视图的形式计算领域的隐形如果需要的话。



文章来源: Using part of date in CAML query