夏令时在3月27日在爱尔兰开始。从那时起,任何已添加到Dynamics的记录都将任何日期字段设置为落后于实际添加时间的一小时。
奇怪的是,Web UI正确返回日期,而使用SQL Server和XRM查询则错误地返回日期。
服务器计算机上的时间设置是正确的,我已经安装了汇总16,还有什么我可以尝试的吗?
谢谢,
大卫
答案 0 :(得分:5)
Dynamics CRM以UTC格式存储所有日期时间值。
通过Web前端输入的所有数据在存储时自动转换为UTC,并在读取时转换回用户时区。
如果您使用的是Dynamics CRM Outlook客户端,则会使用Windows的时区设置。如果您使用Web客户端,它会在您的个人选项中使用时区设置。确保它是正确的。
SDK始终使用UTC作为日期,不以任何方式转换它们。您有责任以适当的方式转换数据。但是,CrmDateTime类包含一些有用的方法和属性。
确保您只访问FilteredViews(例如FilteredAccount,这是btw唯一支持使用的数据库)。日期字段会自动转换为正确的时区(根据用户设置)。如果您需要访问原始值,则可以使用 utc 后缀(createdon - > createdonutc)作为列。要根据用户/系统设置格式化日期值,您还可以在报告中访问这些设置。请参阅“Formatting Content”
答案 1 :(得分:2)
还有两个随Dynamics CRM一起提供的UDF:
fn_UTCToLocalTime(@dateTime)
fn_LocalTimeToUTC(@dateTime)
这些使用系统用户声明的时区转换为UTC或来自UTC,并考虑DST。
答案 2 :(得分:0)
似乎我的问题是通过将DateTime值从UTC转换为本地时间来解决的。
(我希望将ckeller的评论标记为答案,但似乎没有办法做到这一点。非常感谢ckeller。)