【问题标题】:Using part of date in CAML query在 CAML 查询中使用部分日期
【发布时间】:2012-06-20 13:59:09
【问题描述】:

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

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

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

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

这里怎么写过滤条件?

【问题讨论】:

    标签: sharepoint caml


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      我建议分两步进行:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-01
        • 2011-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多