我在浏览关于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年。
让我困惑的是,单独使用日期和时间比datetime提供了更大的年份和时间范围,精度比datetime多4位,但它们都使用8字节?为什么datetime具有较小的范围和较低的精度,但使用相同的大小来存储自身?
发布于 2013-06-11 07:10:00
Datetime数据类型位于单独的date和time数据类型之前。Datetime数据类型使用8个字节作为两个整数。将01/01/1900存储为0的第一个整数将1900年1月1日之前的任何天数存储为负数,而将1900年1月1日之后的任何日期存储为表示01/01/1900之后的天数的正整数。
日期只从1753年开始的原因是,这是公历的开始,在此之前的任何一天,您都需要知道国家才能确定日期。这是最初的Sybase开发人员做出的决定,Sql Server就是从Sybase开发人员演变而来的。
时间整数部分存储自午夜以来的滴答数。滴答是1/300秒。
在这里可以找到很好的示例和信息;http://blogs.lessthandot.com/index.php/DataMgmt/DataDesign/how-are-dates-stored-in-sql-server和http://karaszi.com/the-ultimate-guide-to-the-datetime-datatypes
https://stackoverflow.com/questions/17029757
复制相似问题