2012-06-18 23 views
2

列表中的標題列僅包含年份。我想提出一個觀點,我只會在最後3年展示。在CAML查詢中使用部分日期

我想在列表定義中使用CAML查詢:

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

我試圖用<Today>元素與Offset屬性得到的東西在這裏,但沒有運氣 - 它不是一個DateTime值,但只有一個數。

如何在此處編寫過濾條件?

回答

2

由於它不是日期時間值,因此它將不會與<Today>offset一起使用,因爲這些元素在運行查詢時基於內部轉換爲SQL DateTime值。

您可以創建一個視圖,您可以在其中查找2009年以上的任何條目(截至2012年),但每年需要進行額外的小型工作才能適應。

我會建議如果可能創建一個真正的日期字段並使用它(也許只顯示基於該值的計算字段)。

1

我會建議做這兩個步驟:

  1. 使用此處http://msdn.microsoft.com/en-us/library/bb862071.aspx描述公式創建DateTime類型的計算字段(無時間)。這將是這樣的= DATE(年-3.0,0)
  2. 使用這個新列進行查詢。喜歡的東西
<Geq> 
     <FieldRef Name="YearCalculated" /> 
     <Value Type="DateTime" IncludeTimeValue="FALSE"><Today /></Value>  
</Geq> 

方法偏移=「 - 1095」也可以工作,但我認爲,從其減去在計算領域的年價值將更好地工作。另外,如果需要,您始終可以使查看錶單中的計算字段不可見。