CAML-запрос, сравнивающий DateTime с Eq - PullRequest
5 голосов
/ 14 марта 2012

Я пытаюсь собрать CAML-запрос, который сравнивает два объекта DateTime, но я не могу заставить его работать, используя сравнение Eq .Из моего тестирования я могу заставить Gt, Lt, Geq, Leq работать со сравнениями DateTime, но, похоже, Eq вообще не работает вообще.

Первый объект - это поле даты и времени (создаетсяInfoPath и сохранены в поле «Дата и время» в списке SharePoint), текущий пример имеет «14.03.2012 12:00 AM».Я попытался использовать значение [Today /], используя жестко запрограммированное значение в формате 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>

Это ничего не возвращает, хотя у меня есть элементс этой датой в списке.Есть идеи?

Ответы [ 2 ]

2 голосов
/ 06 января 2015

Оператор Equal ничего не может вернуть, потому что считаются секунды. Попробуйте использовать диапазон дат. Пример:

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

Обратите внимание, мы используем одну и ту же дату, но разное время.

1 голос
/ 14 марта 2012

Работает ли это:

<Query><Where><Eq><FieldRef Name="SomeDateTimeField"/><Value IncludeTimeValue='TRUE' Type='DateTime'>2012-03-14T00:00:00</Value></Eq></Where></Query>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...