Фильтрация элементов SharePoint по дате создания: примеры CAML, REST API и PowerShell

Хватит воевать с SharePoint! Покажем, как фильтровать список по дате Created так, что даже время ахнет. Секреты CAML и REST внутри!

Сегодня 08:24:40 ()․ Эта дата удобно использовать в примерах, чтобы показать, как формировать условия «больше/меньше/равно» текущей даты․

SharePoint предоставляет несколько способов фильтрации элементов списка или библиотеки документов по полю Created (дата создания)․ В зависимости от выбранного интерфейса — пользовательский интерфейс, CAML, REST API или PowerShell — синтаксис запроса отличается, но логика остаётся одинаковой: сравниваем значение поля Created с нужной датой․

Основные способы фильтрации

  1. Пользовательский интерфейс, быстрый способ через представление (View) с условием «Дата создания»;
  2. CAML-запросы — используются в серверном коде, JavaScript (JSOM) и PowerShell;
  3. REST API — удобно для клиентских приложений, SharePoint Framework (SPFx) и Power Automate;
  4. PowerShell (SharePoint Online Management Shell) — полезно для администрирования и пакетной обработки․

Примеры CAML-запросов

CAML (Collaborative Application Markup Language) описывает условие внутри тега <Where>․ Ниже показаны типичные варианты․

Фильтрация за последние 30 дней

<Where>
 <Geq>
 <FieldRef Name='Created' />
 <Value Type='DateTime'>2026-05-09T08:24:40Z</Value>
 </Geq>
</Where>

Здесь мы указываем, что дата создания должна быть больше или равна 30 дней назад от текущей даты ․ Формат YYYY-MM-DDTHH:MM:SSZ — ISO 8601, обязателен для CAML․

Элементы, созданные сегодня

<Where>
 <Eq>
 <FieldRef Name='Created' />
 <Value Type='DateTime'>2026-06-08T00:00:00Z</Value>
 </Eq>
</Where>

Чтобы захватить весь день, можно также использовать диапазон:

<Where>
 <And>
 <Geq>
 <FieldRef Name='Created' />
 <Value Type='DateTime'>2026-06-08T00:00:00Z</Value>
 </Geq>
 <Lt>
 <FieldRef Name='Created' />
 <Value Type='DateTime'>2026-06-09T00:00:00Z</Value>
 </Lt>
 </And>
</Where>

Элементы, созданные после определённого часа

<Where>
 <Gt>
 <FieldRef Name='Created' />
 <Value Type='DateTime'>2026-06-08T08:24:40Z</Value>
 </Gt>
</Where>

Примеры REST API

REST-запрос к SharePoint выглядит так: https://contoso․sharepoint․com/sites/site/_api/web/lists/getbytitle('Documents')/items?$filter=․․․

За последние 7 дней

Сначала вычисляем дату в формате ISO 8601 (UTC)․ Для минус 7 дней получаем ․

https://contoso․sharepoint․com/sites/site/_api/web/lists/getbytitle('Documents')/items?$filter=Created ge datetime'2026-06-01T00:00:00Z'

Созданные сегодня (с учётом времени)

https://contoso․sharepoint;com/sites/site/_api/web/lists/getbytitle('Documents')/items?$filter=Created ge datetime'2026-06-08T00:00:00Z' and Created lt datetime'2026-06-09T00:00:00Z'

Сортировка по дате создания (по убыванию)

https://contoso․sharepoint․com/sites/site/_api/web/lists/getbytitle('Documents')/items?$orderby=Created desc

Примеры PowerShell (SharePoint Online)

Для работы с SharePoint Online потребуется модуль Microsoft․Online․SharePoint․PowerShell и учётные данные․

Подключение

Connect-SPOService -Url https://contoso-admin․sharepoint․com

Получить элементы списка, созданные за последние 14 дней

$siteUrl = "https://contoso․sharepoint․com/sites/project"
$listName = "Tasks"
$ctx = New-Object Microsoft․SharePoint․Client․ClientContext($siteUrl)
$ctx․Credentials = Get-Credential # запрос логина/пароля

$list = $ctx․Web․Lists․GetByTitle($listName)
$caml = @"
<View>
 <Query>
 <Where>
 <Geq>

 <FieldRef Name='Created' />
 <Value Type='DateTime'>2026-05-25T08:24:40Z</Value>
 </Geq>
 </Where>
 </Query>
</View>
"@

$query = New-Object Microsoft․SharePoint․Client․CamlQuery
$query․ViewXml = $caml
$items = $list․GetItems($query)
$ctx․Load($items)
$ctx․ExecuteWriteQuery

foreach ($item in $items) {
 Write-Output ("ID: {0} ⸺ Title: {1} ⸺ Created: {2}" -f $item․Id, $item["Title"], $item["Created"])
}

Фильтрация через параметр -Filter (для Get-PnPListItem)

Connect-PnPOnline -Url https://contoso․sharepoint․com/sites/project -Interactive
$fourteenDaysAgo = (Get-Date)․AddDays(-14)․ToString("yyyy-MM-ddTHH:mm:ssZ")
Get-PnPListItem -List "Documents" -Filter "Created ge datetime'$fourteenDaysAgo'"

Советы и лучшие практики

  • Всегда используйте UTC в CAML и REST — SharePoint хранит даты в UTC, а локальное смещение применяется только при отображении․
  • Для диапазона целого дня удобно задавать ge начало дня и lt начало следующего дня․
  • Если нужно часто фильтровать по дате создания, создайте индексированное поле (например, вычисляемый столбец с датой) — это ускорит запросы․
  • В REST API используйте параметр $select, чтобы получать только нужные поля и уменьшить объём трафика․
  • При работе с большими списками (>5000 элементов) обязательно включайте пагинацию ($top и $skiptoken) либо используйте индексированные столбцы в CAML․
  • Проверяйте формат даты: yyyy-MM-ddTHH:mm:ssZ — любое отклонение приведёт к ошибке «Cannot convert value … to type DateTime»․

Фильтрация SharePoint по дате создания — фундаментальная операция, которая реализуется одинаково независимо от выбранного интерфейса․ Понимание форматов дат, правильного использования операторов сравнения и особенностей каждого API позволяет создавать эффективные и надёжные запросы․ Надеюсь, приведённые примеры помогут вам быстро интегрировать фильтрацию по Created в свои решения, будь то пользовательские представления, кастомные формы, скрипты администрирования или приложения на базе SharePoint Framework․