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

CONVERT 函数 [数据类型转换]

发布时间:2020-12-12 14:49:15 所属栏目:MsSql教程 来源:网络整理
导读:? CONVERT ?函数? [ 数据类型转换 ] -- ------------------------------------------------------------------------------ 功能? 返回转换成提供的数据类型的表达式。 语法? CONVERT ?(?data?type,?expression? [ ?,?format-style? ] ?) 参数? data?type???
?

CONVERT?函数?[数据类型转换]

--------------------------------------------------------------------------------
功能?
返回转换成提供的数据类型的表达式。

语法?
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?或?1009?或?10913?或?11320?或?12021?或?121)始终返回世纪数位?(yyyy)。
**?当转换为?datetime?时输入;当转换为字符数据时输出。
***?专门用于?XML。对于从?datetime?或?smalldatetime?到?character?数据的转换,输出格式如表中所示。对于从?floatmoney?或?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

(编辑:李大同)

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

    推荐文章
      热点阅读