因此,我已经在我的SharePoint应用程序中使用此查询数月了,并且它一直运行良好。但我刚刚意识到,如果我试图获取的一周有一个像 7 月 31 日到 8 月 4 日这样的拆分月份,它只会返回 7 月 31 日的列表项???我已经尝试了我能想到的一切来让它工作,但什么都没有。我如何让它工作?我不知所措。尝试使用日期范围重叠标签,它只是查询失败,尝试了我能想到的所有其他日期格式,只返回一个空枚举器。浏览了几个小时的MSDN,对这个问题没有帮助,搜索谷歌和堆栈溢出几个小时,找不到这个问题的答案。它在我的所有查询中都运行良好,除了
startDate = startDate.toISOString();
endDate = endDate.toISOString();
var camlQuery = new SP.CamlQuery();
var filterString = '<View><Query>';
filterString = filterString + '<Where>';
filterString = filterString + '<And>';
filterString = filterString + '<Geq>';
filterString = filterString + '<FieldRef Name='EstimatedDelivery'/>';
filterString = filterString + '<Value IncludeTimeValue='TRUE' Type = 'DateTime'>' + startDate + '</Value>';
filterString = filterString + '</Geq>';
filterString = filterString + '<Leq>';
filterString = filterString + '<FieldRef Name='EstimatedDelivery'/>';
filterString = filterString + '<Value IncludeTimeValue='TRUE' Type = 'DateTime'>' + endDate + '</Value>';
filterString = filterString + '</Leq>';
filterString = filterString + '</And>';
filterString = filterString +'</Where>';
filterString = filterString + '</Query></View>';
<View>
<Query>
<Where>
<And>
<Geq>
<FieldRef Name='EstimatedDelivery'/>
<Value IncludeTimeValue='TRUE' Type='DateTime'>startDate</Value>
</Geq>
<Leq>
<FieldRef Name='EstimatedDelivery'/>
<Value IncludeTimeValue='TRUE' Type='DateTime'>endDate</Value>
</Leq>
</And>
</Where>
</Query>
</View>
似乎没有人能弄清楚为什么 CAML 在分为两个月数的几周内会失败,所以更改了休息调用的 CAML 查询,现在一切正常,速度提高了大约 12 倍!
var url = "/_api/web/lists/getbytitle('ListName')/Items?" +
"$orderby=EstimatedDelivery&$filter=EstimatedDelivery ge datetime'"
+ startDate + "' and EstimatedDelivery le datetime'" + endDate + "'";
getItems(url, retrieveCalendarListItemsSucceeded);
function getItems(url, callback) {
$.ajax({
url: _spPageContextInfo.webAbsoluteUrl + url,
type: "GET",
headers: {
"accept": "application/json;odata=verbose",
},
success: function (data) {
callback(data.d.results);
},
error: function (error) {
alert(JSON.stringify(error));
}
});
}