CONVERT(data_type,expression[,style])

说明:
此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)
相互转换的时候才用到.

例子:
SELECT CONVERT(varchar(30),getdate(),101)
结果为:
09/12/2007

语句及查询结果:目前时间2007-9-13 下午122,操作系统是中文繁体版的
SELECT CONVERT(varchar(100), GETDATE(), 0): Sep 13 2007  1:21PM
SELECT CONVERT(varchar(100), GETDATE(), 1): 09/13/07
SELECT CONVERT(varchar(100), GETDATE(), 2): 07.09.13
SELECT CONVERT(varchar(100), GETDATE(), 3): 13/09/07
SELECT CONVERT(varchar(100), GETDATE(), 4): 13.09.07
SELECT CONVERT(varchar(100), GETDATE(), 5): 13-09-07
SELECT CONVERT(varchar(100), GETDATE(), 6): 13 Sep 07
SELECT CONVERT(varchar(100), GETDATE(), 7): Sep 13, 07
SELECT CONVERT(varchar(100), GETDATE(), 8): 13:25:31
(现在下午125
SELECT CONVERT(varchar(100), GETDATE(), 9):
Sep 13 2007  1:25:31:300PM
SELECT CONVERT(varchar(100), GETDATE(), 10):
09-13-07
SELECT CONVERT(varchar(100), GETDATE(), 11): 07/09/13
SELECT CONVERT(varchar(100), GETDATE(), 12): 070913
SELECT CONVERT(varchar(100), GETDATE(), 13): 13 Sep 2007 13:25:31:300
SELECT CONVERT(varchar(100), GETDATE(), 14): 13:25:31:300
SELECT CONVERT(varchar(100), GETDATE(), 20): 2007-09-13 13:25:31
SELECT CONVERT(varchar(100), GETDATE(), 21): 2007-09-13 13:25:31.300
SELECT CONVERT(varchar(100), GETDATE(), 22): 09/13/07  1:25:31 PM
SELECT CONVERT(varchar(100), GETDATE(), 23): 2007-09-13
SELECT CONVERT(varchar(100), GETDATE(), 24): 13:25:31
SELECT CONVERT(varchar(100), GETDATE(), 25): 2007-09-13 13:25:31.300
SELECT CONVERT(varchar(100), GETDATE(), 100): Sep 13 2007  1:25PM
SELECT CONVERT(varchar(100), GETDATE(), 101): 09/13/2007
SELECT CONVERT(varchar(100), GETDATE(), 102): 2007.09.13
SELECT CONVERT(varchar(100), GETDATE(), 103): 13/09/2007
SELECT CONVERT(varchar(100), GETDATE(), 104): 13.09.2007
SELECT CONVERT(varchar(100), GETDATE(), 105): 13-09-2007
SELECT CONVERT(varchar(100), GETDATE(), 106): 13 Sep 2007
SELECT CONVERT(varchar(100), GETDATE(), 107): Sep 13, 2007
SELECT CONVERT(varchar(100), GETDATE(), 108): 13:25:31
SELECT CONVERT(varchar(100), GETDATE(), 109): Sep 13 2007  1:25:31:300PM
SELECT CONVERT(varchar(100), GETDATE(), 110): 09-13-2007
SELECT CONVERT(varchar(100), GETDATE(), 111): 2007/09/13
SELECT CONVERT(varchar(100), GETDATE(), 112): 20070913
SELECT CONVERT(varchar(100), GETDATE(), 113): 13 Sep 2007 13:25:31:300
SELECT CONVERT(varchar(100), GETDATE(), 114): 13:25:31:300
SELECT CONVERT(varchar(100), GETDATE(), 120): 2007-09-13 13:25:31
SELECT CONVERT(varchar(100), GETDATE(), 121): 2007-09-13 13:25:31.300
SELECT CONVERT(varchar(100), GETDATE(), 126): 2007-09-13T13:25:31.300
SELECT CONVERT(varchar(100), GETDATE(), 130): 2 ????? 1428  1:25:31:300PM
SELECT CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM
   
例如,假设你想从一个MONEY型字段中取出所有的值,并在结果后面加上字符串“US Dollars”。如下例所示:

SELECT CONVERT(CHAR(8),cost1)+’US Dollars’ FROM testmoney

函数CONVERT()带有两个变量。第一个变量指定了数据类型和长度。第二个变量指定了要进行转换的字段。在这个例子中,字段price被转换成长度为8个字符的CHAR型字段。字段cost1要被转换成字符型,才可以在它后面连接上字符串’US Dollars’

Cast函数:

CAST ( expression AS data_type )

由于SQL Server提供两种功能,因此应该选择哪种功能或应该在哪种情况下使用该功能就很容易让人困惑了。CONVERT是专对SQL Server使用的,使日期与时间值,小数之间转换具有更宽的灵活性。CAST是两种功能中更具ANSI标准的功能,即虽然更具便携性(比如,使用CAST的函数能更容易的被其它数据库软件使用),但功能相对弱一些。不过,当小数转化为数值,并保留原始表达式中的小数数值时,仍然需要使用CAST。因此, CONVERT 一般用在日期和时间值,小数之间的转换,CAST即用于一般的小数转数值和字符型。CASTCONVERT还能联合使用,达到特殊的效果。比如,在current date下生成char变量一般使用以下方法:

  SELECT CONVERT(CHAR(10), CURRENT_TIMESTAMP, 102)结果:

2007.09.13102表明使用了ANSI日期模式,即yy.mm.dd型)

然而,如果你希望将这个变量明确生成为datetimesmalldatetime变量,以此在特定的数据库栏中兼容,那么你可以使用以下语句:

SELECT CAST(CONVERT(CHAR(10),CURRENT_TIMESTAMP,102) AS DATETIME)

结果:2007-09-13 00:00:00.000

  (如1200AM作为时间戳;CURRENT_TIMESTAMP的时间信息将被丢弃。)