TSQL 日期时间大小

who*_*ows 4 t-sql sql-server time datetime date

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

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

让我困惑的是,单独使用日期和时间可以为您提供更广泛的年份和时间,并且比日期时间多四位数的精度,但它们都使用 8 个字节?为什么日期时间的范围较小,精度较低,但使用相同的大小来存储自身?

Ste*_*ord 5

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

日期仅从 1753 年开始的原因是,这是公历的开始,在此之前的任何天您都需要了解所在国家/地区才能确定日期。这是最初的 Sybase 开发人员做出的决定,Sql Server 就是从 Sybase 发展而来的。

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

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