2012-03-14 14 views
5

Próbuję utworzyć kwerendę CAML, która porównuje dwa obiekty DateTime, ale I nie może uzyskać go do pracy przy użyciu porównania Eq. Z moich testów mogę uzyskać Gt, Lt, Geq, Leq do pracy z porównaniami DateTime, ale Eq w ogóle nie działa.Kwerenda CAML Porównywanie DateTime z Eq

Pierwszym obiektem jest pole Data i godzina (utworzone przez program InfoPath i zapisane w polu Data i godzina na liście programu SharePoint), bieżącym przykładem jest "3/14/2012 12:00 AM". Próbowałem użyć wartości [Dzisiaj /], używając zakodowanej wartości w formacie ISO 2012-03-14T00: 00: 00Z, ale nic nie zadziałało do tej pory. Eksperymentowałem z IncludeTimeValue, ustawiając go na true/false, bez poprawy.

Mój obecny zapytanie wygląda trochę tak,

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

ta zwraca nic, chociaż mam element z tego czasu data w liście. Jakieś pomysły?

+0

Myślę, że w międzyczasie sprawdzę tylko, czy jest w zakresie Gt/Lt, aby określić, czy jest to konkretna data, zamiast używać Eq, aby to zrobić. Rodzaj sprawia, że ​​brzydsza kwerenda, ale działa do tej pory. – ferr

+0

Musisz usunąć cudzysłowy wokół wartości. – ktharsis

+0

Przepraszamy, że był to literówka w poście, rzeczywisty kod nie odzwierciedla tego. – ferr

Odpowiedz

1

to działa:

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

To nie działa. – ferr

+0

Co powraca? 0 wyników? błąd? – TroyBramley

+0

Ponieważ spowoduje zwrócenie elementów, w których pole "SomeDateTimeField" = 2012-03-14T00: 00: 00. Wynik będzie pusty Jeśli wartość pola różni się więcej niż jedną sekundę. –

2

Równe oświadczenie nie może nic wrócić, ponieważ sekundy są zliczane. Spróbuj użyć zakresu dat. Próbka:

<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> 

Proszę zwrócić uwagę, używamy tej samej daty, ale innego czasu.