2

我们有一个应用程序使用来自 Dynamics CRM 的数据并执行一些查询以在特定日期和时间之后检索数据。

了解哪个时钟使用 Dynamics CRM 设置记录日期对我们来说很重要。例如,当它创建一个新的 Opportunity 时,createdon 日期是从哪里来的?

日期和时间是否基于运行 CRM 的 Web 服务器的时钟,是否基于存储 CRM 数据库的 SQL Server,其他?

4

4 回答 4

2

我从未见过有关此问题的任何实际文档。我可以通过查看 SQL 跟踪和一些 CRM 服务器 DLL 的反编译来推断以下内容。

我不确定在 Dynamics CRM 中生成日期/时间值的方式是否单一。

例如,有一个存储过程来创建一个 WebResource,它使用 SQL Server 的函数来获取 UTC 时间。在这种情况下,时间将是托管 SQL 的服务器的时钟时间。

这不适用于创建/更新实体记录。在这种情况下,时间作为INSERT命令的一部分传递。我不相信 CRM 会先调用以获取 SQL Server 的时间,因此这个时间来自 CRM Web 前端服务器(如果创建/更新操作异步发生,则来自异步服务器。).NET 提供了UTC 时间值,我认为在 Create 和 Update 上填充这些值时不会发生时间值的显式转换。有一个明确的动作来删除毫秒部分。

如果您使用OverrideCreatedOn,那么该值完全取决于您(只要它在 CRM 可接受的范围内),但它会切断毫秒。

于 2017-02-06T23:37:28.723 回答
0

Dynamics CRM 在时间方面很简单:它只使用System.DateTime.Now读取服务器内置时钟的属性。

于 2017-02-06T18:13:04.637 回答
0

查询 CRM 数据看起来只有秒级。如果您在 CRM 中创建少量记录(不覆盖 createdon),然后查询它们的 createdon 日期,您将获得类似的值(我使用ISO 8601 标准ToString("o")的格式化程序打印的地方):

2017-01-19T21:33:12.0000000Z
2017-01-19T21:27:02.0000000Z
2017-01-19T20:12:54.0000000Z

似乎还有一个打开的CrmIdea 项目可以开始记录此类时间戳中的毫秒数

于 2017-02-06T20:05:14.930 回答
0

Dynamics CRM 根据系统设置存储日期/时间。但是,当它存储在 CRM 数据库中时,根据 SQL Server 的 Windows Server 时间将其存储为 UTC+0。

于 2017-02-08T11:16:03.563 回答