【问题标题】:Dynamics CRM - Daylight savings timeDynamics CRM - 夏令时
【发布时间】:2011-04-14 08:51:00
【问题描述】:

爱尔兰于 3 月 27 日开始实行夏令时。从那时起,任何已添加到 Dynamics 的记录都将任何日期字段设置为比实际添加时间晚一小时。

奇怪的是,Web UI 正确返回日期,而使用 SQL Server 和 XRM 查询则返回错误。

服务器机器上的时间设置是正确的,我已经安装了rollup 16,还有什么我可以尝试的吗?

谢谢,

大卫

【问题讨论】:

  • 您使用 SQL 选择哪些列(在哪个表或视图上)?原始表、视图和 sdk 以 UTC 格式返回日期值。
  • 我正在查看视图中的 createdon 字段。因此,当我读取值时,我可能应该将 UTC 转换为本地时间。

标签: dynamics-crm dynamics-crm-4


【解决方案1】:

Dynamics CRM 以 UTC 格式存储所有日期时间值。

通过 Web 前端输入的所有数据在存储时会自动转换为 UTC,并在读取时转换回用户时区。

如果您使用 Dynamics CRM Outlook 客户端,则使用 Windows 的时区设置。如果您使用网络客户端,它会使用您个人选项中的时区设置。确保它是正确的。

SDK

SDK 始终使用 UTC 作为日期,并且以任何方式对其进行转换。您有责任以适当的方式转换数据。但是,CrmDateTime 类包含一些有用的方法和属性。

报告

确保您只访问FilteredViews(例如 FilteredAccount,顺便说一句,这是唯一支持使用的数据库)。日期字段会自动转换为正确的时区(根据用户设置)。如果您需要访问原始值,它可以作为带有 utc 后缀 (createdon -> createdonutc) 的列使用。要根据用户/系统设置格式化日期值,您也可以在报告中访问这些设置。见“Formatting Content

【讨论】:

    【解决方案2】:

    Dynamics CRM 附带的两个 UDF 也很方便:

    fn_UTCToLocalTime(@dateTime)
    fn_LocalTimeToUTC(@dateTime)
    

    这些使用系统用户声明的时区和 DST 转换为/从 UTC 转换。

    【讨论】:

      【解决方案3】:

      看来我的问题是通过将 DateTime 值从 UTC 转换为本地时间来解决的。

      (我希望将 ckeller 的评论标记为答案,但似乎没有办法做到这一点。非常感谢 ckeller。)

      【讨论】:

        猜你喜欢
        • 2015-05-03
        • 1970-01-01
        • 2018-03-06
        • 2019-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多