加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

CONVERT 函数 [数据类型转换]

发布时间:2020-12-12 14:45:20 所属栏目:MsSql教程 来源:网络整理
导读:?功能? 返回转换成提供的数据类型的表达式。 语法? CONVERT ?(?data?type,?expression? [ ?,?format-style? ] ?) 参数? data?type????表达式将转换成的数据类型。 expression????要转换的表达式。 format - style????对于将字符串转换为日期或时间数据类型以
?功能?
返回转换成提供的数据类型的表达式。

语法?
CONVERT ?(?data?type,?expression? [ ?,?format-style? ] ?)

参数?
data?type????表达式将转换成的数据类型。

expression????要转换的表达式。

format
- style????对于将字符串转换为日期或时间数据类型以及相反的转换过程,format - style?是描述要使用的日期格式字符串的样式代码。?format - style?参数的值具有下列含义:不含世纪?(yy)??含世纪?(yyyy)??输出??
- ?? 0 ?或? 100 ??Mmm?dd?yyyy?hh:nn:ss:sss?AM(或?PM)??
1 ?? 101 ??mm / dd / yy [ yy ] ??
2 ?? 102 ?? [ yy ] yy.mm.dd??
3 ?? 103 ??dd / mm / yy [ yy ] ??
4 ?? 104 ??dd.mm.yy [ yy ] ??
5 ?? 105 ??dd - mm - yy [ yy ] ??
6 ?? 106 ??dd?Mmm?yy [ yy ] ??
7 ?? 107 ??Mmm?dd,?yy [ yy ] ??
8 ?? 108 ??hh:nn:ss??
- ?? 9 ?或? 109 ??Mmm?dd?yyyy?hh:nn:ss:sssAM(或?PM)??
10 ?? 110 ??mm - dd - yy [ yy ] ??
11 ?? 111 ?? [ yy ] yy / mm / dd??
12 ?? 112 ?? [ yy ] yymmdd??
13 ?? 113 ??dd?Mmm?yyy?hh:nn:ss:sss( 24 ?小时制,欧洲缺省时间? + ?毫秒, 4 ?位数年份)??
14 ?? 114 ??hh:nn:ss:sss( 24 ?小时制)??
20 ?? 120 ??yyyy - mm - dd?hh:nn:ss:sss( 24 ?小时制,ODBC?规范, 4 ?位数年份)??
21 ?? 121 ??yyyy - mm - dd?hh:nn:ss.sss( 24 ?小时制,ODBC?规范加毫秒, 4 ?位数年份)??


如果未提供?format
- style?参数,则使用样式代码? 0

有关每种输出符号(如?Mmm)生成的样式的描述,请参见?DATE_FORMAT?选项?
[ compatibility ]

标准和兼容性?
SQL
/ 92 ????供应商扩展。?

SQL
/ 99 ????供应商扩展。?

Sybase????与?Adaptive?Server?Enterprise?兼容。?

另请参见?
CAST ?函数? [ 数据类型转换 ] ?
示例?
下列语句说明了格式样式的用法:

SELECT ? CONVERT (? CHAR (? 20 ?),?order_date,? 104 ?)
FROM ?sales_orderorder_date??
16.03 . 2000 ??
20.03 . 2000 ??
23.03 . 2000 ??
25.03 . 2000 ??

??

SELECT ? CONVERT (? CHAR (? 20 ?),? 7 ?)
FROM ?sales_orderorder_date??
Mar?
16 ,? 00 ??
Mar?
20 ,? 00 ??
Mar?
23 ,? 00 ??
Mar?
25 ,? 00 ??

??

下面的语句说明了到整数的转换,并返回值?
5

SELECT ? CONVERT (? integer ,? 5.2 ?)

CONVERT
将某种数据类型的表达式显式转换为另一种数据类型。由于某些需求经常用到取日期格式的不同.现以下可在
SQL?Server中 将日期格式化.

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?



* ????默认值(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


?

重要??默认情况下,SQL?Server?根据截止年份?
2049 ?解释两位数字的年份。即,两位数字的年份? 49 ?被解释为? 2049 ,而两位数字的年份? 50 ?被解释为? 1950 。许多客户端应用程序(例如那些基于?OLE?自动化对象的客户端应用程序)都使用? 2030 ?作为截止年份。SQL?Server?提供一个配置选项("两位数字的截止年份"),借以更改?SQL?Server?所使用的截止年份并对日期进行一致性处理。然而最安全的办法是指定四位数字年份。

?

当从?
smalldatetime ?转换为字符数据时,包含秒或毫秒的样式将在这些位置上显示零。当从? datetime ?或? smalldatetime ?值进行转换时,可以通过使用适当的? char ?或? varchar ?数据类型长度来截断不需要的日期部分。

下表显示了从?
float ?或? real ?转换为字符数据时的?style?值。

值?输出?
0 (默认值)?最大为? 6 ?位数。根据需要使用科学记数法。?
1 ?始终为? 8 ?位值。始终使用科学记数法。?
2 ?始终为? 16 ?位值。始终使用科学记数法。?



在下表中,左列表示从?
money ?或? smallmoney ?转换为字符数据时的?style?值。

值?输出?
0 (默认值)?小数点左侧每三位数字之间不以逗号分隔,小数点右侧取两位数,例如? 4235.98 。?
1 ?小数点左侧每三位数字之间以逗号分隔,小数点右侧取两位数,例如? 3 , 510.92 。?
2 ?小数点左侧每三位数字之间不以逗号分隔,小数点右侧取四位数,例如? 4235.9819 。??


使用?
CONVERT

CONVERT ?(data_type [ (length) ] ,?expression? [ ,?style ] )


select ? CONVERT ( varchar ,? getdate (),? 120 ?)?
2004 - 09 - 12 ? 11 : 06 : 08 ?

select ? replace ( replace ( replace ( CONVERT ( varchar ,? 120 ?), ' - ' , ' ' ), ' ? ' , ' : ' , ' ' )?
20040912110608 ?

select ? CONVERT ( varchar ( 12 )?,? 111 ?)?
2004 / 09 / 12 ?

select ? CONVERT ( varchar ( 12 )?,? 112 ?)?
20040912 ?

select ? CONVERT ( varchar ( 12 )?,? 102 ?)?
2004.09 . 12 ?

select ? CONVERT ( varchar ( 12 )?,? 101 ?)?
09 / 12 / 2004 ?

select ? CONVERT ( varchar ( 12 )?,? 103 ?)?
12 / 09 / 2004 ?

select ? CONVERT ( varchar ( 12 )?,? 104 ?)?
12.09 . 2004 ?

select ? CONVERT ( varchar ( 12 )?,? 105 ?)?
12 - 09 - 2004 ?

select ? CONVERT ( varchar ( 12 )?,? 106 ?)?
12 ? 09 ? 2004 ?

select ? CONVERT ( varchar ( 12 )?,? 107 ?)?
09 ? 12 ,? 2004 ?

select ? CONVERT ( varchar ( 12 )?,? 108 ?)?
11 : 06 : 08 ?

select ? CONVERT ( varchar ( 12 )?,? 109 ?)?
09 ? 12 ? 2004 ? 1 ?

select ? CONVERT ( varchar ( 12 )?,? 110 ?)?
09 - 12 - 2004 ?

select ? CONVERT ( varchar ( 12 )?,? 113 ?)?
12 ? 09 ? 2004 ? 1 ?

select ? CONVERT ( varchar ( 12 )?,? 114 ?)?
11 : 06 : 08.177

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读