sql的convert
① sql SERVER中強制類型轉換cast和convert的區別
SQL中cast
和convert都是用來將一種數據類型的表達式轉換為另一種數據類型的表達式。CAST
和
CONVERT
提供相似的功能,只是語法不同。
在時間類型轉化中一般用到convert,因為它比cast多加了一個style,可以轉化成不同時間的格式。
一、使用語法:
1、CAST
(
expression
AS
data_type
)
2、CONVERT
(data_type[(length)],
expression
[,
style])
參數說明:
expression:是任何有效的表達式。
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
數據類型)。
二、腳本示例
select CAST('1234' as int) -- 1234
select CONVERT(int, '1234') -- 1234
select CAST(123.4 as int) -- 123
select CONVERT(int, 123.4) -- 123
select CAST('123.4' as decimal) -- 123
select CONVERT(decimal, '123.4') -- 123
select CAST('123.4' as decimal(9,2)) -- 123.40
select CONVERT(decimal(9,2), '123.4') -- 123.40
declare @Num moneyset @Num = 1234.56
select CONVERT(varchar(20), @Num, 0) -- 1234.56
select CONVERT(varchar(20), @Num, 1) -- 1,234.56
select CONVERT(varchar(20), @Num, 2) -- 1234.5600
CONVERT(VARCHAR(19),GETDATE()) --Dec 29 2016 11:45 PM
CONVERT(VARCHAR(10),GETDATE(),110) --12-29-2016
CONVERT(VARCHAR(11),GETDATE(),106) --29 Dec 16
CONVERT(VARCHAR(24),GETDATE(),113) --29 Dec 2016 16:25:46.635三、convert函數的style參數說明
1、時間style
2、float
和
real
樣式
3、money
和
smallmoney
樣式
② mysql中convert()函數是什麼意思
mysql中convert()函數的意思是用來把一個數據類型的值轉換為另一個數據類型。
其他函數:
ASCII(s)
作用: 返回字元串 s 的第一個字元的 ASCII 碼。
CHAR_LENGTH(s)
作用: 返回字元串 s 的字元數。
CHARACTER_LENGTH(s)
作用: 返回字元串 s 的字元數。
CONCAT(s1,s2...sn) 作用: 字元串 s1,s2 等多個字元串合並為一個字元串 。
CONCAT_WS(x, s1,s2...sn) 作用: 同 CONCAT(s1,s2,...) 函數,但是每個字元串之間要加上 x,x 可以是分隔符 。
FIELD(s,s1,s2...) 作用: 返回第一個字元串 s 在字元串列表(s1,s2...)中的位置 。
(2)sql的convert擴展閱讀:
MySQL 中文排序錯誤的解決方法
方法1
在 MySQL 資料庫中,進行中文排序和查找的時候,對漢字的排序和查找結果是錯誤的。這種情況在 MySQL 的很多版本中都存在。如果這個問題不解決,那麼 MySQL 將無法實際處理中文。
出現這個問題的原因是:MySQL
在查詢字元串時是大小寫不敏感的,在編繹 MySQL 時一般以 ISO-8859
字元集作為默認的字元集,因此在比較過程中中文編碼字元大小寫轉換造成了這種現象,一種解決方法是對於包含中文的欄位加上 "binary"
屬性,使之作為二進制比較,
例如將 "name char(10)" 改成 "name char(10)binary"。
方法2
如果你使用源碼編譯 MySQL,可以編譯 MySQL 時使用 --with--charset=gbk 參數,這樣 MySQL 就會直接支持中文查找和排序了。
③ SQL Server 時間函數---CONVERT() 函數
CONVERT() 函數主要有以下兩個用法
1.把日期轉換為新數據類型的通用函數。
2.可以用不同的格式顯示日期/時間數據。
CONVERT( data_type(length) , expression , style )
下面的表格展示了 datetime 或 smalldatetime 轉換為字元數據的 style 值:
style的位置填左兩列的數字就可以轉化成對應的格式。
GETDATE() 函數來獲得當前的日期/時間
參考轉發鏈接 :https://www.runoob.com/sql/func-convert.html
④ sql中convert轉化函數的用法
說明:
使用 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)。
不帶世紀數位 (yy) 帶世紀數位 (yyyy)
標准
輸入/輸出**
- 0 或 100 (*) 默認值 mon dd yyyy hh:miAM(或 PM)
1 101 美國 mm/dd/yyyy
2 102 ANSI yy.mm.dd
3 103 英國/法國 dd/mm/yy
4 104 德國 dd.mm.yy
5 105 義大利 dd-mm-yy
6 106 - dd mon yy
7 107 - mon dd, yy
8 108 - hh:mm:ss
- 9 或 109 (*) 默認值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM)
10 110 美國 mm-dd-yy
11 111 日本 yy/mm/dd
12 112 ISO yymmdd
- 13 或 113 (*) 歐洲默認值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h)
14 114 - hh:mi:ss:mmm(24h)
- 20 或 120 (*) ODBC 規范 yyyy-mm-dd hh:mm:ss[.fff]
- 21 或 121 (*) ODBC 規范(帶毫秒) yyyy-mm-dd hh:mm:ss[.fff]
- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss.mmm(不含空格)
- 130* Hijri**** dd mon yyyy hh:mi:ss:mmmAM
- 131* Hijri**** dd/mm/yy hh:mi:ss:mmmAM
* 默認值(style 0 或 100、9 或 109、13 或 113、20 或 120、21 或 121)始終返回世紀數位 (yyyy)。
** 當轉換為 datetime時輸入;當轉換為字元數據時輸出。
*** 專門用於 XML。對於從 datetime或 smalldatetime 到 character 數據的轉換,輸出格式如表中所示。對於從 float、money 或 smallmoney 到 character 數據的轉換,輸出等同於 style 2。對於從 real 到 character 數據的轉換,輸出等同於 style 1。
****Hijri 是具有幾種變化形式的日歷系統,Microsoft® SQL Server™ 2000 使用其中的科威特演算法。
詳細出處參考:http://www.jb51.net/article/20363.htm
⑤ 在C#中 sql的convert函數怎麼用呀
定義和用法
CONVERT()
函數是把日期轉換為新數據類型的通用函數。
CONVERT()
函數可以用不同的格式顯示日期/時間數據。
語法
CONVERT(data_type(length),data_to_be_converted,style)
data_type(length)
規定目標數據類型(帶有可選的長度)。data_to_be_converted
含有需要轉換的值。style
規定日期/時間的輸出格式。
可以使用的
style
值:
Style
ID
Style
格式
100
或者
0
mon
dd
yyyy
hh:miAM
(或者
PM)
101
mm/dd/yy
102
yy.mm.dd
103
dd/mm/yy
104
dd.mm.yy
105
dd-mm-yy
106
dd
mon
yy
107
Mon
dd,
yy
108
hh:mm:ss
109
或者
9
mon
dd
yyyy
hh:mi:ss:mmmAM(或者
PM)
110
mm-dd-yy
111
yy/mm/dd
112
yymmdd
113
或者
13
dd
mon
yyyy
hh:mm:ss:mmm(24h)
114
hh:mi:ss:mmm(24h)
120
或者
20
yyyy-mm-dd
hh:mi:ss(24h)
121
或者
21
yyyy-mm-dd
hh:mi:ss.mmm(24h)
126
yyyy-mm-ddThh:mm:ss.mmm(沒有空格)
130
dd
mon
yyyy
hh:mi:ss:mmmAM
131
dd/mm/yy
hh:mi:ss:mmmAM
⑥ 在sql中convert怎麼用
下面鏈接是sql函數大全
實例
下面的腳本使用 CONVERT() 函數來顯示不同的格式。我們將使用 GETDATE() 函數來獲得當前的日期/時間:
CONVERT(VARCHAR(19),GETDATE())
CONVERT(VARCHAR(10),GETDATE(),110)
CONVERT(VARCHAR(11),GETDATE(),106)
CONVERT(VARCHAR(24),GETDATE(),113)
結果類似:
Dec 29 2008 11:45 PM
12-29-2008
29 Dec 08
29 Dec 2008 16:25:46.635
⑦ sql server2000中CONVERT中各個參數的意思
CONVERT ( data_type , expression , style )
第一拍臘個參數為要轉換後的數據類型
第二個參數為要轉襲閉滑換態仔的表達式,可以是欄位或表達式
第三個參數為轉換後的格式,如日期型轉換後有很多種格式,yyyy/mm/dd 等。
第三個參數可省略
⑧ SQL CONVERT()函數的問題
第三十一章 SQL函數 CONVERT
將給定表達式轉換為指定數據類型的函數。
CONVERT(datatype,expression[,format-code])
{fn CONVERT(expression,datatype)}
參數
expression - 要轉換的表達式。
datatype - 要將表達式轉換為的數據類型。
format - 可選-指定日期和時間格式的整數代碼,用於在日期/時間/時間戳數據類型和字元數據類型之間進行轉換。 此參數僅用於通用標量語法形式。
描述
這里描述了CONVERT函數的兩種不同實現。 兩者都將一種數據類型中的表達式轉換為另一種數據類型中的相應值。 兩者都執行日期和時間轉換。
注意:這兩個CONVERT實現中的參數以不同的順序表示。 第一個是與MS SQL Server兼容的通用 IRIS標量函數,它接受三個參數。 第二個是帶有兩個參數的 ODBC標量函數。 下面的文本將分別處理這兩種形式的CONVERT。
CONVERT(datatype,expression)支持流數據的轉換。 例如,可以將字元流欄位的內容轉換為數據類型為VARCHAR的字元串。
{fn CONVERT(expression,datatype)}不支持流數據的轉換; 指定要表達的流欄位將導致SQLCODE -37錯誤。
為兩個版本的CONVERT指定一個無效值將導致SQLCODE -141。
如果表達式沒有定義的數據類型(例如ObjectScript提供的主機變數),則其數據類型默認為字元串數據類型。
CONVERT(datatype,expression,format-code)
可以通過執行VARCHAR-to-VARCHAR轉換來截斷字元串,指定輸出字元串長度小於表達式字元串長度。
在使用CONVERT(或CAST)時,如果字元數據類型(如CHAR或VARCHAR)沒有指定長度,則默認的最大長度為30個字元。 如果二進制數據類型(如binary或VARBINARY)沒有指定長度,則默認的最大長度為30個字元。 否則,這些沒有指定長度的數據類型將被映射到一個1個字元的MAXLEN,如data types表所示。
可以執行BIT數據類型轉換。 允許的值為1、0或NULL。 如果指定任何其他值,IRIS將發出SQLCODE -141錯誤。 在下面的嵌入式SQL示例中,兩者都是一個NULL的BIT轉換:
ClassMethod Convert()
{
s a=""
&sql(
SELECT CONVERT(BIT,:a),
CONVERT(BIT,NULL)
INTO :x,:y)
w !,"SQLCODE=",SQLCODE
w !,"the host variable is:",x
w !,"the NULL keyword is:",y
}
可選的format-code參數指定日期、datetime或時間格式。 該格式既可用於定義從日期/時間/時間戳數據類型轉換為字元串時的輸出,也可用於定義從字元串轉換為日期/時間/時間戳數據類型時的輸入。 支持以下格式代碼; 輸出兩位數年份的格式代碼列在第一列; 輸出四位數年或不輸出年的格式列在第二列:
Two-digit year codes Four-digit year codes Format
以下是日期和時間轉換的特性:
取值范圍:允許的日期范圍為0001-01-01 ~ 9999-12-31。
默認值:
將時間值轉換為TIMESTAMP、POSIXTIME、DATETIME或SMALLDATETIME時,日期默認為1900-01-01。 注意,對於{fn CONVERT()},日期默認為1841-01-01。
將日期值轉換為TIMESTAMP、POSIXTIME、DATETIME或SMALLDATETIME時,時間默認為00:00:00。
Default Format:如果沒有指定Format -code, CONVERT將嘗試從指定的值確定格式。 如果不能,則默認為格式代碼100。
兩位數年份:從00到49的兩位數年份轉換為21世紀的日期(2000到2049); 從50到99的兩位數年份轉換為20世紀的日期(1950到1999)。
分數秒:分數秒前可以加句號(.)或冒號(:)。 這些符號有不同的含義:
句點是默認值,可用於所有格式代碼。 句號表示標准分數; 因此,12:00:00.4表示十分之四秒,而12:00:00.004表示千分之四秒。 分數精度的位數沒有限制。
冒號只能用於以下格式代碼值:9/109、13/113、14/114、130和131。 冒號表示後面的數字是千分之一秒; 因此12:00:00:4表示四萬分之一秒(12:00:00.004)。 冒號後面的數字限制為3位。
當指定表達式的格式無效或格式與格式代碼不匹配時,將產生SQLCODE -141錯誤。 指定一個不存在的格式代碼將返回1900-01-01 00:00:00。
{fn CONVERT(expression,datatype)}
這是ODBC標量函數。 它支持以下ODBC顯式數據類型轉換。 必須使用「SQL_」關鍵字指定這種形式的CONVERT的數據類型轉換。 在下表中,有兩組轉換數據類型,第一組轉換數據值和數據類型,第二組轉換數據類型,但不轉換數據值:
Source Conversion
SQL_VARCHAR是標準的ODBC表示。 在轉換為SQL_VARCHAR時,日期和時間被轉換為相應的ODBC表示; 數字數據類型值轉換為字元串表示。 從SQL_VARCHAR轉換時,該值必須是有效的ODBC Time、Timestamp或Date表示。
當將時間值轉換為SQL_TIMESTAMP或SQL_POSIXTIME時,未指定的日期默認為1841-01-01。 注意,對於CONVERT(),日期默認為1900-01-01。
將date值轉換為SQL_TIMESTAMP或SQL_POSIXTIME時,時間默認為00:00:00。
在這種語法形式中,小數秒前面可以加句號(.)或冒號(:)。 這些符號有不同的含義。 句號表示標准分數; 因此,12:00:00.4表示十分之四秒,而12:00:00.004表示千分之四秒。 冒號表示接下來的是千分之一秒; 因此12:00:00:4表示千分之四秒。 冒號後面的數字限制為3位。
在轉換為整數數據類型或SQL_DOUBLE數據類型時,數據值(包括日期和時間)將轉換為數字表示。 對於SQL_DATE,這是自1841年1月1日以來的天數。 對於SQL_TIME,這是自午夜以來的秒數。 當遇到非數字字元時,輸入字元串將被截斷。 整數數據類型還截斷十進制數字,返回數字的整數部分。
{fn CONVERT(expression,datatype)}不支持流數據的轉換; 指定要表達的流欄位將導致SQLCODE -37錯誤。
轉換成任何數據類型的NULL仍然是NULL。
空字元串("),或任何非數字字元串值轉換如下:
SQL_VARCHAR和SQL_TIMESTAMP返回提供的值。
數字數據類型轉換為0(零)。
SQL_DATE和SQL_TIME轉換為NULL。
CONVERT 類方法
還可以使用CONVERT()方法調用執行數據類型轉換,使用" SQL_"關鍵字指定數據類型:
$SYSTEM.SQL.Functions.CONVERT(expression,convert-to-type,convert-from-type)
如下示例所示:
WRITE $SYSTEM.SQL.CONVERT(60945,"SQL_VARCHAR","SQL_DATE")
2007-11-11
示例
CONVERT() 示例
下面的示例使用標量語法形式的CONVERT。
下面的示例比較了使用DECIMAL和DOUBLE數據類型對小數的轉換:
SELECT CONVERT(DECIMAL,-123456789.0000123456789) AS DecimalVal,
CONVERT(DOUBLE,-123456789.0000123456789) AS DoubleVal
下面的示例將字元流欄位轉換為VARCHAR文本字元串。 它還使用CHAR_LENGTH顯示字元流欄位的長度:
SELECT Notes,CONVERT(VARCHAR(80),Notes) AS NoteText,CHAR_LENGTH(Notes) AS TextLen
FROM Sample.Employee WHERE Notes IS NOT NULL
下面的例子展示了幾種將出生日期欄位(DOB)轉換為格式化字元串的方法:
SELECT DOB,
CONVERT(VARCHAR(20),DOB) AS DOBDefault,
CONVERT(VARCHAR(20),DOB,100) AS DOB100,
CONVERT(VARCHAR(20),DOB,107) AS DOB107,
CONVERT(VARCHAR(20),DOB,114) AS DOB114,
CONVERT(VARCHAR(20),DOB,126) AS DOB126
FROM Sample.Person
默認格式和代碼100格式是相同的。 因為DOB欄位不包含時間值,所以顯示時間的格式(這里包括默認值100、114和126)提供一個零值,它表示12:00AM(午夜)。 代碼126格式提供了一個不包含空格的日期和時間字元串。
{fn CONVERT()} 示例
下面的示例使用了ODBC語法形式的CONVERT。
下面的嵌入式SQL示例將混合字元串轉換為整數。 IRIS在第一個非數字字元處截斷字元串,然後將結果數字轉換為規范形式:
ClassMethod Convert1()
{
s a="007 James Bond"
&sql(SELECT {fn CONVERT(:a, SQL_INTEGER)} INTO :x)
w !,"SQLCODE=",SQLCODE
w !,"the host variable is:",x
}
DHC-APP>d ##class(PHA.TEST.SQLCommand).Convert1()
SQLCODE=0
the host variable is:7
下面的示例將「DOB」(出生日期)列中的日期轉換為SQL_TIMESTAMP數據類型。
SELECT DOB,{fn CONVERT(DOB,SQL_TIMESTAMP)} AS DOBtoTstamp
FROM Sample.Person
生成的時間戳格式為「yyyy-mm-dd hh:mm:ss」。
下面的示例將「DOB」(出生日期)列中的日期轉換為SQL_INTEGER數據類型。
SELECT DOB,{fn CONVERT(DOB,SQL_INTEGER)} AS DOBtoInt
FROM Sample.Person
下面的示例將「DOB」(出生日期)列中的日期轉換為SQL_VARCHAR數據類型。
SELECT DOB,{fn CONVERT(DOB,SQL_VARCHAR)} AS DOBtoVChar
FROM Sample.Person
生成的字元串格式為:yyyy-mm-dd。
⑨ SQL中CONVERT的格式是什麼
如果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作為時間戳;
⑩ sql語句中的convert是什麼意思
CAST 和 CONVERT
將某種數據類型的表達式顯式轉換為另一種數據類型。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)。
不帶世紀數位 (yy) 帶世紀數位 (yyyy)
標准
輸入/輸出**
- 0 或 100 (*) 默認值 mon dd yyyy hh:miAM(或 PM)
1 101 美國 mm/dd/yyyy
2 102 ANSI yy.mm.dd
3 103 英國/法國 dd/mm/yy
4 104 德國 dd.mm.yy
5 105 義大利 dd-mm-yy
6 106 - dd mon yy
7 107 - mon dd, yy
8 108 - hh:mm:ss
- 9 或 109 (*) 默認值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM)
10 110 美國 mm-dd-yy
11 111 日本 yy/mm/dd
12 112 ISO yymmdd
- 13 或 113 (*) 歐洲默認值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h)
14 114 - hh:mi:ss:mmm(24h)
- 20 或 120 (*) ODBC 規范 yyyy-mm-dd hh:mm:ss[.fff]
- 21 或 121 (*) ODBC 規范(帶毫秒) yyyy-mm-dd hh:mm:ss[.fff]
- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss:mmm(不含空格)
- 130* 科威特 dd mon yyyy hh:mi:ss:mmmAM
- 131* 科威特 dd/mm/yy hh:mi:ss:mmmAM