Tu trzeba poruszyć dwie kwestie. Pierwsza to taka, iż zapytania CAML w SharePoint korzystają z zapisu daty w standardzie ISO 8601. Czym to się różni od standardowego zapisu? Domyślnie podalibyśmy taką datę:

2008-09-02 11:30

Lub

2008-09-02 11:30 AM

ISO 8601 rozróżnia część daty od godziny poprzez literę T i Z oraz niwelując ‘przełącznik’ AM/PM:

2008-09-02T11:30:00Z

Jak widać, ISO 8601 zawiera także sekundy :) Na szczęście sami nie musimy o tym pamiętać, MOSS/WSS dostarcza nam funkcję, która za nas to wykona:

string iso8610DateFormat = SPUtility.CreateISO8601DateTimeFromSystemDateTime(DateTime.Now);

Teraz, jeżeli zrobimy domyślne zapytanie do pobrania elementów stworzonych danego dnia o danej godzinie:

<Where>
  <Eq>
    <FieldRef Name='Created' />
    <Value Type='DateTime'>2008-09-02T11:30:00Z</Value>
  </Eq>
</Where>

To SharePoint będzie szukał takich elementów, które zostały stworzone dnia 2008-09-02 pomijając godzinę.

Obejście problemu jest dość proste. Wystarczy, że zmodyfikujemy Tag Value dodając do niego atrybut IncludeTimeValue=’TRUE’:

<Where>
  <Eq>
    <FieldRef Name='Created' />
    <Value Type='DateTime' IncludeTimeValue='TRUE'>2008-09-02T11:30:00Z</Value>
  </Eq>
</Where>

Teraz MOSS/WSS będzie szukał tych elementów, które zostały stworzone dnia 2008-09-02 o godzinie 11:30.