深入理解CAST和CONVERT提供的具體功能

iteye_20954發表於2012-01-04
CAST 和 CONVERT 提供的功能:將某種資料型別的表示式顯式轉換為另一種資料型別。

語法
使用 CAST:
CAST ( expression AS data_type )
使用 CONVERT:
CONVERT (data_type[(length)], expression [, style])
引數
expression
是任何有效的 Microsoft® SQL Server™
表示式。有關更多資訊,請參見表示式。

data_type
目標系統所提供的資料型別,包括 bigint 和 sql_variant。
不能使用使用者定義的資料型別。
有關可用的資料型別的更多資訊,請參見資料型別。
length
nchar、nvarchar、char、varchar、
binary 或 varbinary 資料型別的可選引數。
style
日期格式樣式,藉以將 datetime 或 smalldatetime 資料轉換為字元資料(nchar、nvarchar、char、varchar、nchar 或 nvarchar 資料型別);或者字串格式樣式,藉以將 float、real、money 或 smallmoney 資料轉換為字元資料(nchar、nvarchar、char、varchar、nchar 或 nvarchar 資料型別)。


SQL Server 支援使用科威特演算法的阿拉伯樣式中的資料格式。

在表中,左側的兩列表示將 datetime 或 smalldatetime 轉換為字元資料的 style 值。給 style 值加 100,可獲得包括世紀數位的四位年份 (yyyy)。


以上內容是到SQL幫助中複製下來的,但是要注意個情況,但CONVERT對日期進行轉換時,注意style的用法,看以下有什麼不同:

--字元轉換為日期時,Style的使用
--1. Style=101時,表示日期字串為:mm/dd/yyyy格式
SELECT CONVERT(datetime,'11/1/2003',101)
--結果:2003-11-01 00:00:00.000


--2. Style=101時,表示日期字串為:dd/mm/yyyy格式

SELECT CONVERT(datetime,'11/1/2003',103)
--結果:2003-01-11 00:00:00.000


/*== 日期轉換為字串 ==*/

DECLARE @dt datetime
SET @dt='2003-1-11'
--1. Style=101時,表示將日期轉換為:mm/dd/yyyy 格式
SELECT CONVERT(varchar,@dt,101)
--結果:01/11/2003
--2. Style=103時,表示將日期轉換為:dd/mm/yyyy 格式
SELECT CONVERT(varchar,@dt,103)
--結果:11/01/2003
/*== 這是很多人經常犯的錯誤,對非日期型轉換使用日期的style樣式 ==*/
SELECT CONVERT(varchar,'2003-1-11' ,101)
--結果:2003-1-11
SELECT CONVERT(varchar,CAST('2003-1-11' AS DATETIME),101)

--結果:01/11/2003

------------------------------------------------------------------------------------------------

convert和cast是為了輸出格式的轉化 --日期轉換引數,值得收藏 select CONVERT(varchar, getdate(), 120 ) 2004-09-12 11:06:08 select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','') 20040912110608 select CONVERT(varchar(12) , getdate(), 111 ) 2004/09/12 select CONVERT(varchar(12) , getdate(), 112 ) 20040912 select CONVERT(varchar(12) , getdate(), 102 ) 2004.09.12 其它我不常用的日期格式轉換方法: select CONVERT(varchar(12) , getdate(), 101 ) 09/12/2004 select CONVERT(varchar(12) , getdate(), 103 ) 12/09/2004 select CONVERT(varchar(12) , getdate(), 104 ) 12.09.2004 select CONVERT(varchar(12) , getdate(), 105 ) 12-09-2004 select CONVERT(varchar(12) , getdate(), 106 ) 12 09 2004 select CONVERT(varchar(12) , getdate(), 107 ) 09 12, 2004 select CONVERT(varchar(12) , getdate(), 108 ) 11:06:08 select CONVERT(varchar(12) , getdate(), 109 ) 09 12 2004 1 select CONVERT(varchar(12) , getdate(), 110 ) 09-12-2004 select CONVERT(varchar(12) , getdate(), 113 ) 12 09 2004 1 select CONVERT(varchar(12) , getdate(), 114 ) 11:06:08.177


相關文章