【发布时间】:2019-08-22 06:30:35
【问题描述】:
我正在从 SQL Server 的数据库中获取日期。
当我从数据库中获取 DateTime 并比较 C# 和 SQL Server 中的毫秒数时。
我看他们不一样。
这是为什么呢?
【问题讨论】:
-
你能举个例子来说明你所看到的吗?
标签: c# sql-server sql-server-2008
我正在从 SQL Server 的数据库中获取日期。
当我从数据库中获取 DateTime 并比较 C# 和 SQL Server 中的毫秒数时。
我看他们不一样。
这是为什么呢?
【问题讨论】:
标签: c# sql-server sql-server-2008
SQL Server 的datetime 数据类型在毫秒级别上不准确。
Official documentation 提供了数据时间数据类型的属性列表。
在该列表中,您将找到以下行:
Accuracy Rounded to increments of .000, .003, or .007 seconds
您还将在同一页面中找到以下引用:
注意
对新作品使用 time、date、datetime2 和 datetimeoffset 数据类型。这些类型符合 SQL 标准。它们更便携。 time、datetime2 和 datetimeoffset 提供更高的秒精度。 datetimeoffset 为全球部署的应用程序提供时区支持。
如果您使用 DateTime2 而不是 DateTime,您将获得 100 纳秒的精度以及其他好处。
事实上,除非您需要保持向后兼容性,否则您根本不应该使用DateTime,而只能使用较新的数据类型。
【讨论】: