2013-08-02 28 views
2

我想运行一个针对SharePoint列表(使用客户端对象模型)的查询,查找匹配日期字段的项目。使用CAML在日期字段上的查询

我的查询是: 2012-07-24T02:50:28

我知道,有在该EmDateSent字段的值列表中的项目2012-07-24T02:50:28但是当我运行这个时,我得到了0行。

花了好几个小时的研究和实验,我发现我使用的日期格式有效 - 或者我认为。现在看来,它并没有。

我的代码如下。

任何人都可以建议别的东西我可以试试吗?

CamlQuery camlQuery = new CamlQuery(); 
camlQuery.ViewXml = String.Format(
    @"<View> 
     <Query> 
      <Where> 
       <Eq> 
        <FieldRef Name='{0}'/> 
         <Value Type='DateTime' IncludeTimeValue='True'>{1}</Value> 
       </Eq> 
      </Where> 
     </Query> 
     </View>", EMAIL_FIELD_DATE_SENT, details.DateSent.HasValue ? details.DateSent.Value.ToString("yyyy-MM-ddTHH:mm:ss") : ""); 


ListItemCollection listItems = upLoadList.GetItems(camlQuery); 

_context.Load(listItems); 
_context.ExecuteQuery(); 

if (listItems.Count > 0) // At this point I expect listItems.Count to be 1, but it is 0 
{ 
    .... 
+0

你必须使用U2U程序来执行这个查询吗?为了确保有这个过滤器的记录? – Tiago

+0

尝试格式'yyyy-MM-dd HH:mm:ss'(不带'T')。必须以此方式提供日期(有关在CAML查询中使用的不同格式,请参阅http://aymkdn.github.io/SharepointPlus/symbols/%24SP%28%29.list.html#.add) – AymKdn

回答

0

你的例子看起来是正确的,并且在时间戳中使用“T”没有问题。但是,从我所能找到的信息来看,大多数类似于您的示例使用SPQuery class而不是CamlQuery class。我相信这是造成你的问题。