?
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?或?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
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|