【发布时间】:2011-05-27 04:31:55
【问题描述】:
我有一个 SQL Server DB 表,其中有一列“ReceivedDate”定义为“datetime”,其中应包含 UTC 日期...在我的 C# 代码中,我使用实体框架将表映射到一个类,该类具有相应的System.DateTime 类型的属性“ReceivedDate”。
程序将 XML 文件中的日期加载到 DB 中,稍后会检查 XML 中的数据是否与 DB 中的数据相同...当 XML 和 DB 中的 ReceivedDate 日期不匹配时,检查失败。 ..例如:
ReceivedDate from XML:
<ReceivedDate>2010-12-16T22:53:27.5912217Z</ReceivedDate>
ReceivedDate from DB:
2010-12-16 22:53:27.590
经过一些调试,我注意到 DB 中的日期没有将 Kind 属性设置为 Utc,并且刻度数要少得多,因此日期比较失败...
- 如何在 SQL 中存储完整的 UTC 日期 服务器所以当实体框架 检索它,我得到 System.DateTime 与那个完全相同的值 来自 XML 文件(包括 Kind=Utc)?
- 这只是使用的问题吗 我的列的不同 sql 数据类型 (例如 datetime2 而不是 datetime)?
更新:
我解决这个问题的方法是:
- 将 sql 数据类型更改为“datetime2”以匹配 sql 数据类型和 .net System.DateTime 之间的精度
- 在我的 POCO 中,我覆盖了 Equals,在检查 ReceivedDate 属性时,我刚刚从 ReceivedDate 创建了另一个 DateTime 变量,但使用了 Kind == Utc 的构造函数。
这可行,尽管我同意使用 DateTimeOffset 可能是更好的解决方案。
【问题讨论】:
标签: c# sql-server datetime entity-framework-4 utc