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

2021-08-26 13:47:16 字數 2766 閱讀 9697

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

sql型別轉換函式cast和convert

簡介 資料型別轉換可以通過 cast 和convert 函式來實現。大多數情況下,這兩個函式是重疊的,它們反映了 sql語言的演化歷史。這兩個函式的功能相似,不過它們的語法不同。雖然並非 所有型別的值都能轉變為其他資料型別,但總的來說,任何可以轉換的值都可以用簡單的函式實現轉換。語法 cast ex...

深入理解C語言 深入理解指標

關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...

mysql 索引深入理解 深入理解MySql的索引

為什麼索引能提高查詢速度 先從 mysql的基本儲存結構說起 mysql的基本儲存結構是頁 記錄都存在頁裡邊 各個資料頁可以組成乙個雙向鍊錶每個資料頁中的記錄又可以組成乙個單向鍊錶 每個資料頁都會為儲存在它裡邊兒的記錄生成乙個頁目錄,在通過主鍵查詢某條記錄的時候可以在頁目錄中使用二分法快速定位到對應...