本人微信公众号:微软动态CRM专家罗勇 ,回复293或者20190110可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me 。

我们使用高级查找对日期字段进行筛选的时候,你会发现无法写入时分秒,即使你下载下来,强行加上是时分秒,也是无效的,转换成SQL的时候只保留日期部分。

<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>
<entity name='incident'>
<attribute name='title' />
<attribute name='incidentid' />
<filter type='and'>
<condition attribute='createdon' operator='on' value='2019-01-03' />
</filter>
</entity>
</fetch>

上面的FetchXml执行的话(不论通过SOAP终结点还是Web API终结点),转成T-SQL(假设调用用户的时区是东八区),转换后其实是createdon大于等于1月2日16:00:00,且小于1月3日16:00:00 。

那么有没有办法精确到时分秒进行查询呢?

答案是有,且听我道来。

对于使用fetchxml来执行查询,可以将日期字段的筛选符号改成大于、大于或等于、小于、小于或等于,这样就会有效,例如下面的fetchxml,注意日期要转换成文本,使用 yyyy-MM-dd HH:mm:ss 格式。

<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>
<entity name='incident'>
<attribute name='title' />
<attribute name='incidentid' />
<filter type='and'>
<condition attribute='createdon' operator='ge' value='2019-01-02 09:00:00' />
<condition attribute='createdon' operator='lt' value='2019-01-04 08:00:00' />
</filter>
</entity>
</fetch>

上面的FetchXml执行的话(不论通过SOAP终结点还是Web API终结点),转成T-SQL(假设调用用户的时区是东八区),转换后其实是createdon大于等于1月2日01:00:00,且小于1月3日00:00:00 。

如果我用Web API终结点,使用ODATA语法来做,也可以使用大于、大于或等于、小于、小于或等于这样的运算符号,类似如下的查询:

https://demo.luoyong.me/api/data/v8.2/incidents?$select=incidentid&$filter=createdon ge 2019-01-02T09:00:00.000Z

上面的查询执行,转成T-SQL其实是createdon大于等于1月2日09:00:00 。

如果我使用QueryExpression呢?

经过测试也可以对日期时间类型字段使用大于、大于或等于、小于、小于或等于的操作符,不论你传入的时间是带时区的时间还是UTC时间,生成的SQL都会将你传入的时间转换成UTC时间进行比较。

下面是总结时间:

1. 对日期时间类型字段使用大于(gt)、大于或等于(ge)、小于(lt)、小于或等于(le)的操作符,这样可以按照时分秒进行查询

2.SOAP终结点,执行FetchmXml,会认为你传入的时间(文本类型)是执行用户偏好时区的时间,计算时会将你传入的时间转换成UTC 0时区时间进行计算,注意使用FetchXml的日期时间要使用 yyyy-MM-dd HH:mm:ss 这种格式。当然如果你使用QueryExpression时候传入的就是时间,而不是文本,会转换成UTC 0时区时间进行计算。

3.Web API终结点,如果是执行FetchXml,其行为和SOAP终结点一样,会将你传入的时间认为是执行用户所偏好时区的时间,计算时会将你传入的时间转换成UTC 0时区时间进行计算。若是使用ODATA风格的话,则会认为你传入的时间就是UTC 0时区的时间,不执行转换。注意日期时间用这种风格:2019-01-02T09:00:00.000Z

Dynamics CRM日期字段查询使用时分秒的方法的更多相关文章

  1. Microsoft Dynamics CRM 2011的组织服务中的RetrieveMultiple方法(转)

    本篇文章,介绍Microsoft Dynamics CRM 2011的组织服务中的RetrieveMultiple方法. RetreiveMultiple方法,用于获取实体的多个实例,该方法的签名如下 ...

  2. Oracle查询日期字段是否包含时分秒 TRUNC() 函数

    可以使用 ORACLE TRUNC()函数 来进行判断 表 A 日期字段 datetime 部分数据带时分秒,部分数据没有时分秒 select * from A where datetime = TR ...

  3. Dynamics CRM 警惕Odata查询的陷阱

    Dynamics CRM可以很方便的通过用Odata通过AJAX查询到数据.查询分为两种:精确查找和模糊查找. 精确查找是指通过GUID匹配得到一条数据,如: http://CRMURL/org/XR ...

  4. Dynamics CRM 查找字段下拉的最多10个选项的排序规则

    原文链接来自DTCCh论坛http://dynamics.ms-talent.com.cn/bbs/content/?id=1406&catogory=CRM 如果你是从事dynamics c ...

  5. MySQL两个日期字段相减得到秒的方法

    一.MySQL中两个DateTime字段相减 假定表名为tblName,两个DateTime字段名分别为beginDateTime,endDateTime,以下是相关两个mysql日期字段相减的SQL ...

  6. Dynamics CRM 构建IN查询

    CRM中有3种查询数据的方式,分别是QueryExpression.fetchxml.linq,本篇讲述的条件IN的查询只支持前两种,linq并不支持. QueryExpression的写法如下,示例 ...

  7. Dynamics CRM 删除字段时检测到有组件类型为查看的依赖组件而无法删除问题

    今天在删除一个字段的时候报如下截图错误,点开详细信息会看到是一个快速查找视图,但却在视图列中没有找到我要删的那个字段,然后回过头来又看到组件类型是查看,这是啥类型?有点摸不着头脑了. 最后想到是不是查 ...

  8. Dynamics CRM 通过OData查询数据URI中包含中文的情况

    filter条件如下"?$filter=new_name eq '采购主管' and new_entityname eq 'new_purchaseenquiry' ",如果用这个 ...

  9. DbFunctions 作为 LINQ to Entities 查询的一部分使用时,此方法调用规范 CreateDateTime EDM 函数以创建新的 DateTime 对象。

    DbFunctions.CreateDateTime CreateDateTime(year, month,day,hour,minute,second)

随机推荐

  1. php.ini中文翻译版--转载

    ;;;;;;;; ; 警告 ; ;;;;;;;;;;; ; 此配置文件是对于新安装的PHP的默认设置. ; 默认情况下,PHP使用此配置文件安装 ; 此配置针对开发目的,并且*不是*针对生产环境 ; ...

  2. RabbitMQ进程结构分析与性能调优

    RabbitMQ是一个流行的开源消息队列系统,是AMQP(高级消息队列协议)标准的实现,由以高性能.健壮.可伸缩性出名的Erlang语言开发,并继承了这些优点.业界有较多项目使用RabbitMQ,包括 ...

  3. [Swift]LeetCode496. 下一个更大元素 I | Next Greater Element I

    You are given two arrays (without duplicates) nums1 and nums2 where nums1’s elements are subset of n ...

  4. [Swift]LeetCode741. 摘樱桃 | Cherry Pickup

    In a N x N grid representing a field of cherries, each cell is one of three possible integers. 0 mea ...

  5. [Swift]LeetCode872. 叶子相似的树 | Leaf-Similar Trees

    Consider all the leaves of a binary tree.  From left to right order, the values of those leaves form ...

  6. 花点时间顺顺Git(上)

    花点时间顺顺Git(上) 为了让你们点进来贼努力的想了一个色彩斑斓大吉大利的标题,好,看正文 历史:Linus的作者创建了开源的Linux,02年以前代码管理都依赖手动合并,后来管理不了了,拒绝SVN ...

  7. HTTP/3 简介

    前言 HTTP 2.0是由谷歌SPDY进化而来,现有的实现基本都是走SSL(说是可以不用SSL,但基本没这么干的),传输层使用TCP.HTTP 3.0是由谷歌QUIC进化出来的,QUIC没有大动HTT ...

  8. 花10分钟搞懂开源框架吧 - 【NancyFx.Net】

    NancyFx是什么? Nancy是一个轻量级的独立的框架,下面是官网的一些介绍: Nancy 是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET 和 Mono 平台,框架的目标是保 ...

  9. redis 系列24 哨兵Sentinel (中)

    四. 检测下线状态 对于Redis的Sentinel中关于下线有两个不同的概念:(1)主观下线(Subjectively Down, 简称 Sdown) 指的是单个 Sentinel 实例对服务器做出 ...

  10. 大战Java虚拟机【3】—— 类加载机制

    前言 当你的代码编译成class文件之后,那么虚拟机如何加载这些文件呢?我们需要知道虚拟机到底做了什么样的事情. 类的生命周期 加载--链接---初始化----使用---卸载 类加载过程 1.加载 读 ...