以文本方式查看主題 - 安易免費財務軟件交流論壇 (http://m.gangyx.cn/bbs/index.asp) -- 電腦知識交流 (http://m.gangyx.cn/bbs/list.asp?boardid=11) ---- SQL Server 2008連載之數據類型五 (http://m.gangyx.cn/bbs/dispbbs.asp?boardid=11&id=32398) |
-- 作者:炙天 -- 發布時間:2011/1/13 8:38:27 -- SQL Server 2008連載之數據類型五 相關字段數據及其數據存儲信息和存儲字節說明 對于bit、tinyint、smallint、int、bigint這類整型數據,應該是比較容易理解的,例如十進制數1234567890,換算成16進制為499602D2,在SQL Server中,數字的存儲是需要倒置的,因此實際存儲應為D2029649。 對于decimal(p,s)、numeric(p,s)的值分別為987654.3210、9876.543210,但二進制卻均為01EA16B04C02000000,把9876543210換算成16進制為24CB016EA進行翻轉,然后再加上符號位,即為01EA16B04C02000000;但很奇怪兩者沒有存儲小數位置,難道需要臨時從數據字典中獲取? smallmoney用四個字節表示,存儲的是與基數-214748.3648想減得到的數字再乘以10000后的二進制形式。Money用八個字節表示,存儲的是與基數-922,337,203,685,477.5808想減得到的數字再乘以10000后的二進制形式。 float、real暫未知 datetime類型的第一個 4 字節存儲的是 base date(即 1900 年 1 月 1 日)之前或之后的天數;另外一個 4 字節存儲以午夜后毫秒數所代表的每天的時間。 smalldatetime 數據類型存儲日期和每天的時間,但精確度低于 datetime。第一個 2 字節存儲 1900 年 1 月 1 日后的天數;另外一個 2 字節存儲午夜后的分鐘數。 date類型的3個字節存儲的是base date(即 1900 年 1 月 1 日)之后的天數。 time類型的5個字節存儲的是以午夜后100納秒所代表的每天的時間。 datetime2類型的前3字節存儲的是 base date(即 1900 年 1 月 1 日)之前或之后的天數;另外一個 5 字節存儲以午夜后100納秒數所代表的每天的時間。 關于char和varchar,存儲的是該字符的ASCI碼;雙字節字符存儲2位。 對于nchar和nvarchar,存儲的UNICODE UCS-2 字符集的雙字節。 |