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