SQL服務器:CONVERT與CAST區別何在

如果SQL Server程序員想將表達式從一種換爲另一種,他可以從SQL Server 7和2000中自帶的兩種功能中做出選擇。在存儲過程或其他情況下,我們常常需要將數據從datetime型轉化成varchar型;CONVERT和CAST就可以用於這種情況。

  由於SQL Server提供兩種功能,因此應該選擇哪種功能或應該在哪種情況下使用該功能就很容易讓人困惑了。CONVERT是專對SQL Server使用的,使日期與時間值,小數之間轉換具有更寬的靈活性。

  CAST是兩種功能中更具ANSI標準的功能,即雖然更具便攜性(比如,使用CAST的函數能更容易的被其它數據庫軟件使用),但功能相對弱一些。不過,當小數轉化爲數值,並保留原始表達式中的小數數值時,仍然需要使用CAST。因此,我建議首先使用CAST,如果遇到必須使用CONVERT的情況時再使用CONVERT。

  CAST和CONVERT還能聯合使用,達到特殊的效果。比如,在current date下生成char變量一般使用以下方法:

  SELECT CONVERT(CHAR(10), CURRENT_TIMESTAMP, 102)

  (102表明使用了ANSI日期模式,即yy.mm.dd型)

  然而,如果你希望將這個變量明確生成爲datetime或smalldatetime變量,以此在特定的數據庫欄中兼容,那麼你可以使用以下語句:

  SELECT CAST(CONVERT(CHAR(10),CURRENT_TIMESTAMP,102) AS DATETIME

  返回值將是 yy.mm.dd 00:00:00(如12:00AM作爲時間戳;CURRENT_TIMESTAMP的時間信息將被丟棄。)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章