【问题标题】:Time zone differences in transfer of data between Dynamics 365 (via Azure Data Factory) to Azure SQL Server在 Dynamics 365(通过 Azure 数据工厂)到 Azure SQL Server 之间传输数据的时区差异
【发布时间】:2020-12-09 14:00:58
【问题描述】:

我正在与客户合作,通过数据工厂将日期记录从 Dynamics 365 传输到 Azure SQL Server,以便进一步传输到外部系统。

客户已将其 Dynamics 365 实例设置为日期字段遵循“UserLocal”行为,而不是“DateOnly”,这将是文档中建议的选项:

https://docs.microsoft.com/en-us/dynamics365/customerengagement/on-premises/developer/behavior-format-date-time-attribute.

由于建立在此之上的业务逻辑,他们无法更改此行为。

当我们将这些日期行传输到 Azure SQL Server 时,我们会得到由系统时区 (UTC) 调整的日期值,这对我们来说相差 -1 小时(我们的时区是 UTC +1)。这会导致我们在 SQL 表中得到不正确的日期。

有没有一种方法可以轻松地在 Azure 数据工厂中针对以 Common Data Service 连接器作为源、SQL Server 作为接收器的复制管道进行调整?日期值作为字符串值转换为 SQL Server。

提前感谢您,我期待您对上述内容的看法!

【问题讨论】:

  • SQL Azure 托管实例可以设置时区。另外,您可以使用 SQL Server/SQL Azure 中的 datetimeoffset 类型来尝试对类型中的时区进行编码。
  • 感谢您的快速回复!我会试一试并报告。
  • 感谢您的提示,我能够使用本地时区创建视图。有没有办法在本地时间显示 datetimeoffset 值?所以不是 2021-01-13 23:00:00.000 +01:00” 得到“2021-01-14 00:00:00.000”?再次感谢您的帮助和欢呼!
  • 我不知道如何让它从 datetimeoffset 在 SQL DB 中显示本地时间。如果您知道该数据库仅在一个时区使用,您可以使用 dateadd 或类似方法对我在视图中假设的进行硬编码。
  • 嗨@thereceptionist,感谢Connor 的帮助和您的另一个问题,我建议您发布一个新问题,让更多人可以帮助您。我只是总结了 cmets 并帮助 Conor 将其发布为答案,这可能对其他社区成员有益。谢谢。

标签: azure azure-sql-database dynamics-crm azure-data-factory microsoft-dynamics


【解决方案1】:

感谢@Conor Cunningham 的帮助:

“SQL Azure 托管实例可以设置时区。另外,您可以使用 SQL Server/SQL Azure 中的 datetimeoffset 类型来尝试对类型中的时区进行编码。”

他为我们提供了一个非常有用的方法。对于您的另一个问题“有没有办法以当地时间显示 datetimeoffset 值?”,@ Conor Cunningham MSFT 也给出了建议:“如果您知道数据库仅在一个时区使用,您可以硬编码我认为在视图中使用 dateadd 或类似的"。

我认为您可以发布一个新问题,让更多人可以帮助您。我帮助他将其发布为答案,这可能对其他社区成员有益。谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多