SQL Server 2008 終於發布新版了,雖然還只是另一個社區測試版而非完全版。每當新軟件發布,大 家最關系的問得最多的問題就是:有些什麼新特性?SQL Server 2008有很多新功能和新工具。不過,本文 還是主要為大家介紹SQL Server 2008七月預覽版引入的新數據類型,並對DATETIME數據類型的功能進行 專門討論。
SQL Server 2008中DATETIME功能的最大轉變就是引入了四種DATETIME數據類型,分別為 DATE、TIME、DATETIMEOFFSET和DATETIME2;此外還增加了新的DATETIME函數功能。
下面首先來討 論一下四種新數據類型的功能和用法。
DATE數據類型
在SQL Server 2005中,沒有專門只 用來存儲日期(不包括時間)的特定數據類型,只能使用DATETIME或SMALLDATETIME數據類型來完成此操作 。但是,當你輸入日期之後,會顯示還有一個時間的組分需要輸入,其初始顯示為12:00 AM。如果只想在 輸出結果中顯示日期那一部分,就必須修改輸出格式。大部分情況下,可以使用getdate()函數來存儲當 前日期。要在SQL Server 2005中的SMALLDATETIME或DATETIME列中保存getdate()的函數值,同時也會保 存了當前的時間,而這可能會引發很多問題。舉例而言,如果你使用以下的語句,想根據給定的日期來搜 索記錄:
SELECT * FROM tblDate Where [Date] = '2007-12-01'
由於Date列裡 含有時間組分,這個命令將無法正常執行, 因此,你必須執行以下的查詢操作:
SELECT * FROM tblDate Where datediff(d,[Date],‘2007-12-01’) =0
盡管上面的查詢操作可以行 得通,不過Date列中符合要求的索引很可能不會被使用。不過你還是可以使用上面的查詢操作調出少量的 記錄。雖然可以利用工作區,但很明顯有必要增加一種去掉時間值的DATE數據類型來減少潛在的錯誤。來 看看以下的語法:
DECLARE @dt as DATE
SET @dt = getdate()
PRINT @dt
以上腳本的輸出結果只有日期,不包括時間部分。DATE數據類型的取值范圍從0001-01-01到9999-12- 31。
TIME數據類型
就像日期數據類型一樣,如果你只想存儲時間數據而不需要日期部分就 可以利用TIME數據類型。下面就是利用TIME數據類型進行查詢的例子:
DECLARE @dt as TIME
SET @dt = getdate()
PRINT @dt
以上腳本輸出結果只包含時間部分,其取值范圍從00:00:00.0000000到23:59:59.9999999。