gpt4 book ai didi

c# - 使用哪种 SQL Server sql 数据类型以保留 UTC 日期时间

转载 作者:太空狗 更新时间:2023-10-29 20:18:27 24 4
gpt4 key购买 nike

我有一个 SQL Server 数据库表,其中有一列“ReceivedDate”定义为“datetime”,它应该包含 UTC 日期...在我的 C# 代码中,我使用 Entity Framework 将表映射到一个类,该类具有相应的System.DateTime 类型的属性“ReceivedDate”。

程序将 XML 文件中的日期加载到数据库中,稍后检查 XML 中的数据是否与数据库中的数据相同...当 XML 中的 ReceivedDate 日期与数据库中的日期不匹配时,检查失败。 ..例如:

ReceivedDate from XML:
<ReceivedDate>2010-12-16T22:53:27.5912217Z</ReceivedDate>

ReceivedDate from DB:
2010-12-16 22:53:27.590

经过一些调试后,我注意到来自数据库的日期没有将 Kind 属性设置为 Utc,并且刻度数要少得多,因此日期比较失败...

  • 如何在 SQL 中存储完整的 UTC 日期服务器所以当 Entity Framework 检索它,我得到 System.DateTime与那个值完全相同的值来自 XML 文件(包括 Kind=Utc)?
  • 这只是使用的问题吗我的列的不同 sql 数据类型(例如 datetime2 代替 datetime)?

更新:

我解决这个问题的方法是:

  1. 将 sql 数据类型更改为“datetime2”以匹配 sql 数据类型和 .net System.DateTime 之间的精度
  2. 在我的 POCO 中,我覆盖了 Equals,在检查 ReceivedDate 属性时,我刚刚从 ReceivedDate 创建了另一个 DateTime 变量,但使用了带有 Kind == Utc 的构造函数。

虽然我同意使用 DateTimeOffset 可能是更好的解决方案,但这是可行的。

最佳答案

使用datetimeoffset存储在 SQL Server 上。

Defines a date that is combined with a time of a day that has time zone awareness and is based on a 24-hour clock.

此外,请考虑使用 DateTimeOffset结构而不是 .NET 代码中的 DateTime

关于c# - 使用哪种 SQL Server sql 数据类型以保留 UTC 日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4471825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com