将一种数据类型的表达式转换为另一种数据类型的表达式。
CAST语法:
CAST ( expression AS data_type [ (length ) ])
CONVERT语法:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
-
expression
-
任何有效的表达式 。
-
data_type
-
目标数据类型。这包括 xml 、bigint 和 sql_variant 。不能使用别名数据类型。有关可用数据类型的详细信息,请参阅数据类型 (Transact-SQL) 。
-
length
-
指定目标数据类型长度的可选整数。默认值为 30。
-
style
-
指定 CONVERT 函数如何转换 expression 的整数表达式。如果样式为 NULL,则返回 NULL。该范围是由 data_type 确定的。
Date 和 Time 样式
如果 expression 为 date 或 time 数据类型,则 style 可以为下表中显示的值之一。其他值作为 0 进行处理。SQL Server 使用科威特算法来支持阿拉伯样式的日期格式。
不带世纪数位 (yy) (1 ) 带世纪数位 (yyyy) 标准 输入/输出 (3 ) -
0 或 100 (1, 2 )
默认
mon dd yyyy hh:miAM(或 PM)
1
101
美国
mm/dd/yyyy
2
102
ANSI
yy.mm.dd
3
103
英国/法国
dd/mm/yyyy
4
104
德国
dd.mm.yy
5
105
意大利
dd-mm-yy
6
106 (1)
-
dd mon yy
7
107 (1)
-
mon dd, yy
8
108
-
hh:mi:ss
-
9 或 109 (1, 2 )
默认设置 + 毫秒
mon dd yyyy hh:mi:ss:mmmAM(或 PM)
10
110
美国
mm-dd-yy
11
111
日本
yy/mm/dd
12
112
ISO
yymmdd
yyyymmdd
-
13 或 113 (1, 2 )
欧洲默认设置 + 毫秒
dd mon yyyy hh:mi:ss:mmm(24h)
14
114
-
hh:mi:ss:mmm(24h)
-
20 或 120 (2 )
ODBC 规范
yyyy-mm-dd hh:mi:ss(24h)
-
21 或 121 (2 )
ODBC 规范(带毫秒)
yyyy-mm-dd hh:mi:ss.mmm(24h)
-
126 (4 )
ISO8601
yyyy-mm-ddThh:mi:ss.mmm(无空格)
-
127 (6, 7 )
带时区 Z 的 ISO8601。
yyyy-mm-ddThh:mi:ss.mmmZ
(无空格)
-
130 (1, 2 )
回历 (5 )
dd mon yyyy hh:mi:ss:mmmAM
-
131 (2 )
回历 (5 )
dd/mm/yy hh:mi:ss:mmmAM
有关类型的详细信息,请参阅:http://msdn.microsoft.com/zh-cn/library/ms187928.aspx
例子:
1.SELECT CONVERT(CHAR(10), CURRENT_TIMESTAMP, 102)
执行结果: 2009.11.23
select convert(NVARCHAR(19),getdate(),120)
执行结果: 2009-11-23 15:48:28
2. select cast( CURRENT_TIMESTAMP as varchar(30))
执行结果: 11 23 2009 3:44PM
3. CAST和CONVERT还能联合使用,达到特殊的效果:
SELECT CAST(CONVERT(CHAR(10),CURRENT_TIMESTAMP,102) AS DATETIME)
执行结果:2009-11-23 00:00:00.000
参考资料: http://msdn.microsoft.com/zh-cn/library/ms187928.aspx