sql server2008中新日期數(shù)據(jù)類型DATITIME2
sql server2008在之前舊的版本的數(shù)據(jù)類型基礎上,增加了一些新的日期數(shù)據(jù)類型,下文就將為您介紹sql server2008中新日期數(shù)據(jù)類型DATITIME2,希望對您學習 sql server2008能夠有些幫助。
sql server2008中的新日期數(shù)據(jù)類型DATETIME2數(shù)據(jù)類型是對DATETIME數(shù)據(jù)類型的一個擴展,該新的數(shù)據(jù)類型擴展了可以接受日期的范圍和在日期/時間值的時間部分添加附加精度。DATETIME2列支持日期從0001-01-01到9999-01-01。擴大的日期范圍現(xiàn)在允許你存儲更早的日期而無需使用一些創(chuàng)造性的編碼算法。
sql server2008中DATETIME2中的時間部分的精確度依賴于你如何定義DATETIME2列,時間部分能夠存儲一個只有小時、分鐘和秒的時間值,或者它能夠支持在不同的精確定存儲微秒,最多有7位小數(shù),微妙可以向下精確到100納秒。
使用sql server2008中的DATETIME2數(shù)據(jù)類型你可以使用不同的長度字符存儲和顯示日期,從19(YYYY-MM-DD hh:mm:ss)到27(YYYY-MM-DD hh:mm:ss.0000000)。這依賴于不同數(shù)量的精度存儲需要一定的磁盤開銷。在DATETIME2列中存儲不同的精度時需要在定義列時指定一個長度,我們可以像DATETIME2(X)來指定精度,其中X代表的是精度長度,可以從0到7。顯示長度和存儲空間的關系如下表所示:
正如上表所示,DATETIME2列存儲一個日期/時間值的磁盤空間開銷是從6-8字節(jié),它取決于你想要保留多少時間精度。
DATETIME2(3)格式等同于我們在舊版本的SQL Server中使用的DATETIME格式,但是使用DATETIME2(3)可以支持精確度到1毫秒,而舊版本中的DATETIME格式只能精確到3.33毫秒。注意DATETIME2(3)只需要7字節(jié)的磁盤開銷,而DATETIME格式需要8個字節(jié),現(xiàn)在,這意味著你可以存儲與較早發(fā)布的SQL Server相同的日期和時間值并且能夠節(jié)省磁盤空間。
使用DATETIME(7)格式允許你存儲日期類型向上精確到100納秒,盡管增加了精度,但是你不能保證在一張表中的一個時間值是***的,當使用DATETIME(7)格式時仍然可能在同一張表中存儲兩條具有相同時間的不同的記錄。 #p#
此處是一個如何使用DATETIME2不同的精度值來顯示不同的時間格式:
- DECLARE @D0 datetime2(0) = '2008-05-10 06:59:11.1234567';
- DECLARE @D1 datetime2(1) = '2008-05-10 06:59:11.1234567';
- DECLARE @D2 datetime2(2) = '2008-05-10 06:59:11.1234567';
- DECLARE @D3 datetime2(3) = '2008-05-10 06:59:11.1234567';
- DECLARE @D4 datetime2(4) = '2008-05-10 06:59:11.1234567';
- DECLARE @D5 datetime2(5) = '2008-05-10 06:59:11.1234567';
- DECLARE @D6 datetime2(6) = '2008-05-10 06:59:11.1234567';
- DECLARE @D7 datetime2(7) = '2008-05-10 06:59:11.1234567';
- PRINT @D0;
- PRINT @D1;
- PRINT @D2;
- PRINT @D3;
- PRINT @D4;
- PRINT @D5;
- PRINT @D6;
- PRINT @D7;
當運行上述代碼時將會得到如下結果:
- 2008-05-10 06:59:11
- 2008-05-10 06:59:11.1
- 2008-05-10 06:59:11.12
- 2008-05-10 06:59:11.123
- 2008-05-10 06:59:11.1235
- 2008-05-10 06:59:11.12346
- 2008-05-10 06:59:11.123457
- 2008-05-10 06:59:11.1234567
此處你可以看到,不同數(shù)量的精度顯示不同的微秒,注意當我在DECLARE語句中設置默認值時DATETIME(4), DATETIME(5) 和DATETIME(6)做了一些舍入。
使用sql server2008中的DATETIME2現(xiàn)在可以讓你存在日期和時間在一列時有了更多的選擇,現(xiàn)在如果你只想存儲一個日期和精確到秒的時間,你可以使用DATETIME(0)來完成此需求而無需編寫額外的代碼以及浪費昂貴的磁盤開銷。
【編輯推薦】