检索时间范围的查询(FetchXML / QueryExpression)

时间:2012-11-19 07:32:05

标签: datetime dynamics-crm-2011 fetchxml

(抱歉英文不好) 我有一个应用程序使用MS-CRM 2011 Web服务来检索crm实体的最后更改。此应用程序使用Windows Mobile设备同步最后一次数据更改。 同步操作每20分钟定期进行一次。在每个同步操作中,我想通过检查实体的“modifiedon”字段来检索先前更新发生的更改。 问题是,CRM查询不使用DateTime对象的Time片段,并且返回了从传递的DateTime参数开始的所有更改。

我检查了FetchXML和QueryExpression,没有什么不同。 有没有办法在Crm WebService上创建一个从指定的日期和时间返回修改记录的查询?

示例(My FetchXml):

<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>
<entity name='new_brand'>
<attribute name='new_brandname' />
<attribute name='new_pdanumber' />
<filter type='and'>
<condition attribute='modifiedon' operator='on-or-after' value='2012/11/12 23:59'/>
</filter>
</entity>
</fetch>

请参阅代码中,我希望所有修改后的实体从2012/11/12 23:00开始,但crm会从2012/11/12 00:00返回所有修改过的记录。

3 个答案:

答案 0 :(得分:0)

您的代码正在查找23:59或之后更改的记录...您的文档结果听起来是正确的。

在任何情况下,使用时间部分 但我怀疑您看到的是用户时间与通用时间的结果。如果用户时区偏移!= 0,那么用户在UI中选择的午夜将与存储在数据库中的值相当于UST等效值。

答案 1 :(得分:0)

我现在和最早的Dynamics CRM 2011组织有同样的问题。在比较之前或之后不要比较时间,只比较日期。尝试使用grater或相等(fetchxml中的&#39; ge&#39;)。

答案 2 :(得分:0)

我们在实体中添加了一个新字段(称为ModifiedOnTick),并在此字段中记录固定日期(2011-01-01)的时间差(以毫秒为单位)。