Запрос Caml для извлечения данных из списка Sharepoint за определенную дату

У меня есть список точек доступа, в котором один из столбцов hte является датой создания типа DateTime, а допустимое значение - OnlyDate.

Дата отправки в моей колонке - 18.05.2011. Когда я выполняю поиск, используя приведенный ниже запрос CAML, он не дает никаких результатов, хотя у меня есть два элемента с этой датой.

<Where><Eq><FieldRef Name='Date_x0020_Created' /><Value Type='DateTime'>5/18/2011</Value></Eq></Where>

Я не понимаю, что не так с этим запросом. Кто-нибудь, пожалуйста, помогите.


person Janet    schedule 20.05.2011    source источник


Ответы (2)


Sharepoint принимает дату и время в формате ISO 8601 Datetime в формате UTC. Формат

yyyy-MM-ddTHH:mm:ssZ

Итак, для вашего примера вы можете использовать

2011-05-18T00:00:00Z

SPUtility предоставляет метод для выполнения это преобразование. Для создания этого на Java вы можете использовать следующий метод:

private String changeDateToISO8601(Date date) {
    TimeZone timeZone = TimeZone.getTimeZone("UTC");
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
    dateFormat.setTimeZone(timeZone);
    String convertedDate = dateFormat.format(date);
    return convertedDate;
}

P.S. Возможно, вам не удастся найти оба элемента, используя только этот тег <Eq>, так как может быть разница во времени. Чтобы это сработало, вам нужно заключить даты в теги <Leq> и <Geq>.

person Nitin Chhajer    schedule 02.05.2013

Вы можете протестировать свой запрос с помощью построителя запросов CAML. Чтобы узнать об основах запросов CAML и о том, как использовать построитель запросов CAML, прочтите следующие статьи - они вам помогут!

person Maruthu    schedule 10.05.2012