sql Server中的money数据类型如何存储在内存中?我知道钱存储在8个字节中,而smallmoney存储在4个字节中.但我不知道怎么办?
例如,当您有123400.93的钱时,它是如何以8个字节存储的?
我有关于十进制和DATE数据类型的相同问题.
特别是对于DATE,格式为YYYY-MM-DD,但它如何以3个字节存储?它是否按照此处所述进行存储:http://dev.mysql.com/doc/internals/en/date-and-time-data-type-representation.html
或存储特定日期的天数?
解决方法
单个字节由8位组成.一位可以容纳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和smallmoney值,就像其他所有内容一样.如果您需要更多信息,请阅读http://computer.howstuffworks.com/bytes.htm
或者你可能会看到这个可能的金钱范围和smallmoney:
http://technet.microsoft.com/en-us/library/ms179882.aspx
更新
对于DATETIME数据类型,它是相同的概念,有点扭曲.在MS sql中,使用2个数字存储DATETIME.第一个是自19/1年1月1日以来的天数,第二个是自午夜以来的刻度数:
看到
http://blogs.lessthandot.com/index.php/DataMgmt/DataDesign/how-are-dates-stored-in-sql-server和When storing a datetime in sql server (datetime type),what format does it store it in?