SQL Server中的"money"和"decimal"数据类型如何存储在内存中?

Noo*_*hin 9 sql memory sql-server

我想知道内存中存储SQL Server数据类型.

moneySQL Server中的数据类型如何存储在内存中?我知道它money存储在8个字节中并smallmoney存储在4个字节中.但我不知道怎么办?

例如,当您有123400.93的钱时,它如何以8个字节存储?

我有关于decimalDATE数据类型的相同问题.

特别是DATE,格式为YYYY-MM-DD,但如何以3个字节存储?它是否按照此处所述进行存储:http://dev.mysql.com/doc/internals/en/date-and-time-data-type-representation.html 或存储特定日期的天数?

Not*_*tMe 10

在这里添加一点......

一个byte由8组成bits.A bit可以容纳2个值(0或1).

所以4个字节是32位(4 x 8).这意味着可存储的数值范围为0到2 ^ 32,总计范围为4,294,967,296.

smallmoney 已签名,因此我们删除其中一个用于符号的位,留下2 ^ 31,或2,147,483,648个可能的值和+/-符号.

现在我们考虑到货币类型的最后4位数字总是在小数点后面,我们最终的范围是-214,748.3648到214,748.3647

从技术上讲,money和s​​mallmoney值是通过在字或字节中翻转位来存储的,就像其他所有内容一样.如果您需要更多信息,请阅读http://computer.howstuffworks.com/bytes.htm

或者你可能会看到这个可能的金钱和小钱的价值范围:http: //technet.microsoft.com/en-us/library/ms179882.aspx

更新
对于DATETIME数据类型,它是相同的概念,有点扭曲.在MS SQL中,DATETIME使用2个数字存储.第一个是自19/1年1月1日以来的天数,第二个是自午夜以来的刻度数:请参阅 http://blogs.lessthandot.com/index.php/DataMgmt/DataDesign/how-are-dates-stored-in -sql-server在sql server(datetime类型)中存储日期时间时,它以什么格式存储?