2012-03-14 33 views
5

我試圖把一個CAML查詢比較兩個datetime對象,但我不能讓它使用公式比較工作比較。從我的測試中,我能得到億噸,LT,GEQ,等效聲級與日期時間的比較工作,但公式似乎並沒有在所有的工作,直到永遠。CAML查詢日期時間等式

第一個目的是一個日期和時間字段(由InfoPath中產生並在SharePoint列表保存到日期和時間字段),當前實施例具有「3/14/2012 12:00 AM」。我已經使用[今天/]值嘗試,使用ISO格式2012-03-14T00一個硬編碼值:00:00Z,但到目前爲止沒有奏效。我試驗了IncludeTimeValue,將其設置爲true/false,沒有任何改進。

我現在的查詢看起來有點像這樣,

<Query> 
<Where> 
    <Eq> 
    <FieldRef Name="SomeDateTimeField" IncludeTimeValue="TRUE" /> 
    <Value Type="DateTime" IncludeTimeValue="TRUE">2012-03-14T00:00:00Z</Value> 
    </Eq> 
</Where> 
</Query> 

這沒有返回,即使我有與列表中該日期時間的項目。有任何想法嗎?

+0

我認爲,在此期間,我將只檢查,如果是的GT/LT範圍,以確定它是否是一個特定的日期,而不是用公式來做到這一點。一種醜陋的查詢,但它到目前爲止工作。 – ferr 2012-03-14 19:07:35

+0

您必須刪除值附近的引號。 – ktharsis 2012-03-19 15:47:18

+0

對不起,這是帖子中的錯字,實際的代碼並沒有反映出來。 – ferr 2012-03-23 12:47:23

回答

1

這是否工作:

<Query><Where><Eq><FieldRef Name="SomeDateTimeField"/><Value IncludeTimeValue='TRUE' Type='DateTime'>2012-03-14T00:00:00</Value></Eq></Where></Query> 
+2

它不起作用。 – ferr 2012-03-14 18:16:50

+0

它返回什麼? 0結果?一個錯誤? – TroyBramley 2012-04-10 09:12:45

+0

因爲它會返回項目,其中場 「SomeDateTimeField」= 2012-03-14T00:00:00。結果將爲空如果字段值不同於一秒以上。 – 2017-03-28 15:10:42

2

平等語句不能返回任何東西,因爲秒計數。 嘗試使用日期範圍。樣品:

<Where> 
<And> 
    <Gt> 
    <FieldRef Name='Created' /> 
    <Value IncludeTimeValue='TRUE' Type='DateTime'>2014-12-10T00:00:00Z</Value> 
    </Gt> 
    <Lt> 
    <FieldRef Name='Created' /> 
    <Value IncludeTimeValue='TRUE' Type='DateTime'>2014-12-10T23:59:59Z</Value> 
    </Lt> 
</And> 
</Where> 

請注意,我們使用相同的日期,但不同的時間。