4

我正在浏览有关 T-SQL 中数据类型大小的 msdn,并注意到一些我有点困惑的东西。

根据http://msdn.microsoft.com/en-us/library/ms186724.aspx,datetime使用 8 个字节并存储 1753-9999 年的日期,时间精度为 hh:mm:ss[.nnn]。现在,如果您分别查看日期和时间,时间使用 3-5 个字节来存储 hh:mm:ss[.nnnnnnn],而日期使用 3 个字节来存储 0 到 9999 年。

让我感到困惑的是,分别使用日期和时间为您提供了比日期时间多四位精度的更广泛的年份和时间,但它们都使用 8 个字节?为什么 datetime 的范围更小,精度更低,却使用相同的大小来存储自己?

4

1 回答 1

4

Datetime 数据类型位于单独的日期和时间数据类型之前。Datetime 数据类型使用 8 个字节,作为两个整数。第一个整数将 01/01/1900 存储为 0 1900 之前的任何天都存储为之前的负天数,之后的任何日期都存储为表示 01/01/1900 之后的天数的正整数。

日期仅从 1753 年开始的原因是,这是公历的开始,在此之前的任何日子,您都需要知道国家来确定日期。这是最初的 Sybase 开发人员做出的决定,而 Sql Server 就是由此而来。

时间整数部分存储自午夜以来的刻度数。一个刻度是 1/300 秒。

可以在这里找到好的示例和信息; http://blogs.lessthandot.com/index.php/DataMgmt/DataDesign/how-are-dates-stored-in-sql-serverhttp://karaszi.com/the-ultimate-guide-to-the-日期时间数据类型

于 2013-06-10T23:09:59.693 回答