SQL 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 CONVERTCHAR20 ), order_date, 104 )
FROM sales_orderorder_date  
16.03.2000  
20.03.2000  
23.03.2000  
25.03.2000  
  

SELECT CONVERTCHAR20 ), order_date, 7 )
FROM sales_orderorder_date  
Mar 
1600  
Mar 
2000  
Mar 
2300  
Mar 
2500  
  

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

SELECT CONVERTinteger5.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 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

 

原文地址:http://www.cnblogs.com/vegaslee/archive/2007/12/10/989811.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值