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。