Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql server中的datetime的内部表示形式是什么?_Sql_Sql Server_Sql Server 2005_Datetime_Internal Representation - Fatal编程技术网

sql server中的datetime的内部表示形式是什么?

sql server中的datetime的内部表示形式是什么?,sql,sql-server,sql-server-2005,datetime,internal-representation,Sql,Sql Server,Sql Server 2005,Datetime,Internal Representation,SQL Server中存储的日期时间值的底层数据结构是什么(如果不同,则为2000和2005)?Ie下到字节表示 当您选择datetime列时,您得到的默认表示形式可能是特定于区域性的值/要更改的主题。也就是说,我们没有看到的一些底层结构正在被格式化为YYYY-MM-DD HH:MM:SS.mmm 我问这个问题的原因是,在我的部门里,有一个普遍持有的观点,它被存储在内存中,字面上是YYYY-MM-DD HH:MM:SS.mmm,但我确信事实并非如此。它可以从1753-01-01到9999-12-

SQL Server中存储的日期时间值的底层数据结构是什么(如果不同,则为2000和2005)?Ie下到字节表示

当您选择datetime列时,您得到的默认表示形式可能是特定于区域性的值/要更改的主题。也就是说,我们没有看到的一些底层结构正在被格式化为YYYY-MM-DD HH:MM:SS.mmm

我问这个问题的原因是,在我的部门里,有一个普遍持有的观点,它被存储在内存中,字面上是YYYY-MM-DD HH:MM:SS.mmm,但我确信事实并非如此。

它可以从1753-01-01到9999-12-31,精确到0.00333秒

细节应该是不透明的,但我在web上找到的大多数资源都说明了以下内容:

前4个字节存储自SQL Server纪元(1900年1月1日)以来的天数,后4个字节存储午夜后的节拍数,其中“节拍”为3.3毫秒


前四个字节是有符号的(可以是正的,也可以是负的),这解释了为什么可以表示早于历元的日期。

这是不正确的。从链接文章中可以看出:实际上,SQLServer确实将午夜后的时钟滴答声存储在那里。每个时钟滴答声相当于3.33毫秒。这也是DATETIME数据类型的精度为百分之一秒的原因。这在BOL中同样是正确的。@ctusch,我已经更新了答案(在将近7年之后!)以更正“刻度”的大小。有趣的是,SQL Server文档使用了术语“准确性”。它应该说“精确”。