天天看點

Sql語句轉換格式函數Cast、Convert

Cast和Convert函數都是用來進行資料格式轉換的,使用頻率還是很高的,記錄下來以備檢視。

在大部分情況下,兩者執行的功能相同,不同的是convert還提供了一些特别的日期格式轉換,而cast沒有這個功能。

既然convert包括了cast的所有功能,而且convert還能進行日期轉換,那麼為什麼需要使用cast呢?實際上,這是為了ANSI/ISO相容。cast是ANSI相容的,而convert則不是。

文法:

cast(expression as data_type[(length)])
convert(data_type[(length)],expression[,style])
           

示例:

//在将varchar值'Guo'轉換成資料類型 int 時失敗
select 'Guo'+ 
//輸出Guo1
select 'Guo'+cast( as varchar)
//輸出Guo1
select 'Guo'+CONVERT(varchar,)
//輸出13.14
select CAST( as decimal(,))
//輸出13.14
select CONVERT(decimal(,),)
           

cast和convert都能轉換時間:

//輸出2016-02-02 00:00:00.000
select CONVERT(datetime,'2016-02-02')
//輸出2016-02-02 00:00:00.000
select CAST('2016-02-02' as datetime)
           

但是時間轉換字元串,cast不如convert花樣多:

//輸出23-10-16
select CONVERT(varchar,getdate(),)
//輸出10/23/16
select CONVERT(varchar,getdate(),)
//輸出16/10/23
select CONVERT(varchar,getdate(),)
//輸出2016/10/23
select CONVERT(varchar,getdate(),)

//10 23 2016  9:12PM
select CAST(GETDATE() as varchar)