CAML查询日期范围内的过滤数据

本文关键字:过滤 数据 范围内 查询 日期 CAML | 更新日期: 2023-09-27 18:07:01

我想从SPList检索数据范围内的项。开始日期为今天,结束日期为30天后的第二天。这是我的CAML查询。

query.Query = string.Concat(@
    "<Where>
        <And>
          <Geq>
            <FieldRef Name='EventDate' />
            <Value IncludeTimeValue='False' Type='DateTime'><Today /></Value>
          </Geq>
          <Leq>
            <FieldRef Name='EventDate' />
            <Value IncludeTimeValue='False' Type='DateTime'><Today offset='30'/></Value>
          </Leq>
       </And>
     </Where>
     <OrderBy>
       <FieldRef Name='EventDate' Ascending='True' />
     </OrderBy>");
SPListItemCollection items = list.GetItems(query);

但是这将只返回具有今天日期的项。

CAML查询日期范围内的过滤数据

试试这个,在<Today/>值中使用OffsetDaysOffset而不是offset

query.Query = string.Concat(@
    "<Where>
        <And>
          <Geq>
            <FieldRef Name='EventDate' />
            <Value IncludeTimeValue='False' Type='DateTime'><Today /></Value>
          </Geq>
          <Leq>
            <FieldRef Name='EventDate' />
            <Value IncludeTimeValue='False' Type='DateTime'><Today OffsetDays='30'/></Value>
          </Leq>
       </And>
     </Where>
     <OrderBy>
       <FieldRef Name='EventDate' Ascending='True' />
     </OrderBy>");

CAML Offset和Offset days的区别是什么?

或者您可以创建DateTime对象并使用SPUtility。CreateISO8601DateTimeFromSystemDateTime方法