如果SQL Server程序員想將表達式從一種換為另一種,他可以從SQL Server 7和2000中自帶的兩種功能中做出選擇。在存儲過程或其他情況下,我們常常需要將數(shù)據(jù)從datetime型轉(zhuǎn)化成varchar型;CONVERT和CAST就可以用于這種情況。
由于SQL Server提供兩種功能,因此應該選擇哪種功能或應該在哪種情況下使用該功能就很容易讓人困惑了。CONVERT是專對SQL Server使用的,使日期與時間值,小數(shù)之間轉(zhuǎn)換具有更寬的靈活性。
CAST是兩種功能中更具ANSI標準的功能,即雖然更具便攜性(比如,使用CAST的函數(shù)能更容易的被其它數(shù)據(jù)庫軟件使用),但功能相對弱一些。不過,當小數(shù)轉(zhuǎn)化為數(shù)值,并保留原始表達式中的小數(shù)數(shù)值時,仍然需要使用CAST。因此,我建議首先使用CAST,如果遇到必須使用CONVERT的情況時再使用CONVERT。
CAST和CONVERT還能聯(lián)合使用,達到特殊的效果。比如,在current date下生成char變量一般使用以下方法:
SELECT CONVERT(CHAR(10), CURRENT_TIMESTAMP, 102)
?。?02表明使用了ANSI日期模式,即yy.mm.dd型)
然而,如果你希望將這個變量明確生成為datetime或smalldatetime變量,以此在特定的數(shù)據(jù)庫欄中兼容,那么你可以使用以下語句:
SELECT CAST(CONVERT(CHAR(10),CURRENT_TIMESTAMP,102) AS DATETIME
返回值將是 yy.mm.dd 00:00:00(如12:00AM作為時間戳;