SQL Server 和 C# 中 DateTime 的毫秒数不相同

Posted

技术标签:

【中文标题】SQL Server 和 C# 中 DateTime 的毫秒数不相同【英文标题】:Milliseconds from DateTime in SQL Server and C# are not the same 【发布时间】:2019-08-22 06:30:35 【问题描述】:

我正在从 SQL Server 的数据库中获取日期。 当我从数据库中获取 DateTime 并比较 C# 和 SQL Server 中的毫秒数时。 我看他们不一样。

这是为什么呢?

【问题讨论】:

你能举个例子来说明你所看到的吗? ***.com/help/how-to-ask 【参考方案1】:

SQL Server 的datetime 数据类型在毫秒级别上不准确。Official documentation 提供了数据时间数据类型的属性列表。 在该列表中,您将找到以下行:

Accuracy Rounded to increments of .000, .003, or .007 seconds

您还将在同一页面中找到以下引用:

注意 对新作品使用 timedatedatetime2datetimeoffset 数据类型。这些类型符合 SQL 标准。它们更便携。 timedatetime2datetimeoffset 提供更高的秒精度。 datetimeoffset 为全球部署的应用程序提供时区支持。

如果您使用 DateTime2 而不是 DateTime,您将获得 100 纳秒的精度以及其他好处。 事实上,除非您需要保持向后兼容性,否则您根本不应该使用DateTime,而只能使用较新的数据类型。

【讨论】:

以上是关于SQL Server 和 C# 中 DateTime 的毫秒数不相同的主要内容,如果未能解决你的问题,请参考以下文章

判断sql server中datetime字段是不是为null的问题?

C# 中的日期时间与 SQL Server 中的 SQL 和 GETDATE()

C# 和SQL Server 类型转换

C# 中不同数据库(如 Oracle 和 SQL Server)之间的 Sql 查询 [关闭]

SQL Server 和 C# 中 DateTime 的毫秒数不相同

在 C# 中使用 SQL Server 2014 保存和检索 XML 数据