2012-02-13 151 views
1

为SharePoint列表中的日期格式为:M/d/YYYY 我必须在splist列:START_TIME和END_TIME,我有哪里获得这些领域,其中“今天”编写一个查询日期大于或等于start_time且小于或等于end_time。当然,我也有几分钟在我的专栏。我遇到的问题是我发现CAML日期格式是:yyyy/mm/ddThrs:min:ssZ。我知道标签获取今天的日期,但如何从字段中更改日期格式,以便查询中的比较成功?SharePoint列表日期格式

这是代码的一部分:

query.Append("<FieldRef Name = 'Start_Time'"); 
query.Append("/>"); 
query.Append("<Value Type ='DateTime'IncludeTimeValue='True'>"); 
query.Append("<Today/>"); 
query.Append("</Value>"); 

自splist日期格式不CAML日期格式的比较将失败

回答

0

你真应该看看LINQ的SharePoint。这将允许您非常轻松地使用CAML查询,并且SPMetal可以帮助您创建一个类似于您在代码中使用的日期的日期实体。

Here

Here

+0

我们正在使用sp2007,你给我的链接似乎只是谈论sp2010。有没有办法将SPLIST自身的日期格式更改为CAML日期格式,这样我的查询就可以正常工作了 – rdk1992 2012-02-13 15:10:17

+0

您是否尝试将SPMetal运行到您的SharePoint站点?我很确定它也可以在2007年运作。另一个最简单的解决方案是将这些日期作为字符串以您想要的格式列出。您必须重写每个Web部件才能正确解析字符串到日期对象。 – 2012-02-13 15:20:11

+0

已经有CAML的正确日期格式吗? – rdk1992 2012-02-13 15:21:06

1

尝试:

<Where> 
    <And> 
    <Geq> 
     <FieldRef Name='start_time' /> 
     <Value Type='DateTime'><Now /></Value> 
    </Geq> 
    <Leq> 
     <FieldRef Name='end_time' /> 
     <Value Type='DateTime'><Now /></Value> 
    </Leq> 
    </And> 
</Where> 

只要start_timeend_time实际上是Date类型,而不是文本的,这样的查询应该工作。无论日期如何显示在屏幕上,日期都将使用CAML中的ISO8601格式。

请注意,上述CAML是在U2U CAML Query Builder的帮助下构建的。