我们有一个应用程序,它使用Dynamics CRM中的数据并执行一些查询以在特定日期和时间之后检索数据。
了解哪个时钟使用Dynamics CRM设置其记录的日期非常重要。例如,当它创建一个新机会时,创建日期来自哪个?
日期和时间是否基于运行CRM的Web服务器的时钟,它是基于存储CRM数据库的SQL Server,还是其他?
答案 0 :(得分:2)
我从未见过有关此问题的任何实际文档。我可以通过查看SQL跟踪和CRM服务器DLL的一些反编译来推断以下内容。
我不确定在Dynamics CRM中是否有单一方式生成日期/时间值。
例如,有一个存储过程来创建一个WebResource,它使用SQL Server的函数来获取时间。在这种情况下,时间将是托管SQL的服务器的时钟时间。
创建/更新实体记录时不是这样。在这种情况下,时间作为INSERT
命令的一部分传递。我不相信CRM正在调用SQL Server的时间,因此这次来自CRM Web前端服务器(如果创建/更新操作异步发生,则来自异步服务器。).NET提供了UTC时间值,我不认为在创建和更新中填充这些值时会发生显式的时间值转换。有一个明确的操作来删除毫秒部分。
如果您使用OverrideCreatedOn
,那么该值完全取决于您(只要它在CRM可接受的范围内),但它会缩短毫秒数。
答案 1 :(得分:0)
当涉及到时间时,Dynamics CRM很简单:它只使用System.DateTime.Now
属性,该属性读取服务器的内置时钟。
答案 2 :(得分:0)
查询CRM数据看起来只是第二次。如果你在CRM中创建了一些记录(没有覆盖已创建的),那么查询它们的创建日期,你会得到一些值(我使用ISO 8601 standard的ToString("o")
格式化程序打印的地方):
2017-01-19T21:33:12.0000000Z
2017-01-19T21:27:02.0000000Z
2017-01-19T20:12:54.0000000Z
似乎还有一个开放的CrmIdea item to start recording milliseconds in these type of timestamps。
答案 3 :(得分:0)
Dynamics CRM根据系统设置存储日期/时间。但是,如果将其存储在CRM数据库中,则根据SQL Server的Windows Server时间将其存储为UTC + 0.