時(shí)間:2024-02-08 11:17作者:下載吧人氣:23
在SQL Server的內(nèi)部存儲(chǔ)中,日期和時(shí)間不是以字符串的形式存儲(chǔ)的,而是使用整數(shù)來(lái)存儲(chǔ)的。使用特定的格式來(lái)區(qū)分日期部分和時(shí)間部分的偏移量,并通過(guò)基準(zhǔn)日期和基準(zhǔn)時(shí)間來(lái)還原真實(shí)的數(shù)據(jù)。
一,DateTime的內(nèi)部存儲(chǔ)
SQL Server存儲(chǔ)引擎把DateTime類型存儲(chǔ)為2個(gè)int32類型,共8個(gè)字節(jié),第一個(gè)int32 整數(shù)(前4個(gè)字節(jié))存儲(chǔ)的是日期相對(duì)于基準(zhǔn)日期(1900-01-01)的偏移量。基準(zhǔn)日期是1900-01-01,當(dāng)前4 字節(jié)為0 時(shí),表示的日期是1900 年1 月1 日。第二個(gè)int32整數(shù)(后4個(gè)字節(jié))存儲(chǔ)的是**(00:00:00.000)之后的時(shí)鐘滴答數(shù),每個(gè)滴答為1⁄300秒,精確度為3.33毫秒(0.00333秒,3.33ms),因此,DateTime能夠表示的時(shí)間,可能會(huì)存在一個(gè)滴答的時(shí)間誤差。
DateTime的內(nèi)部存儲(chǔ)格式,用十六進(jìn)制表示是:DDDDTTTT
舉個(gè)例子,對(duì)于如下的日期和時(shí)間,把DateTime類型轉(zhuǎn)換為大小為8個(gè)字節(jié)的16進(jìn)制,每?jī)蓚€(gè)數(shù)字對(duì)應(yīng)1個(gè)字節(jié):
declare @dt datetime = ‘2015-05-07 10:05:23.187’
select convert(varbinary(8), @dt) as date_time_binary
–output 0x0000A49100A6463C
網(wǎng)友評(píng)論