請問 cast 函數 與 convert 函數有什麼區別呢? 謝謝. 

解决方案 »

  1.   

    CAST 和 CONVERT
    将某种数据类型的表达式显式转换为另一种数据类型。CAST 和 CONVERT 提供相似的功能。语法
    使用 CAST:CAST ( expression AS data_type ) 使用 CONVERT:CONVERT (data_type[(length)], expression [, style])CONVERT可用转换时间格式select convert(varchar(10),getdate(),120)
      

  2.   

    --转载
    如果SQL Server程序员想将表达式从一种换为另一种,他可以从SQL Server 7和2000中自带的两种功能中做出选择。在存储过程或其他情况下,我们常常需要将数据从datetime型转化成varchar型;CONVERT和CAST就可以用于这种情况。  由于SQL Server提供两种功能,因此应该选择哪种功能或应该在哪种情况下使用该功能就很容易让人困惑了。CONVERT是专对SQL Server使用的,使日期与时间值,小数之间转换具有更宽的灵活性。  CAST是两种功能中更具ANSI标准的功能,即虽然更具便携性(比如,使用CAST的函数能更容易的被其它数据库软件使用),但功能相对弱一些。不过,当小数转化为数值,并保留原始表达式中的小数数值时,仍然需要使用CAST。因此,我建议首先使用CAST,如果遇到必须使用CONVERT的情况时再使用CONVERT。  CAST和CONVERT还能联合使用,达到特殊的效果。比如,在current date下生成char变量一般使用以下方法:  SELECT CONVERT(CHAR(10), CURRENT_TIMESTAMP, 102)  (102表明使用了ANSI日期模式,即yy.mm.dd型)  然而,如果你希望将这个变量明确生成为datetime或smalldatetime变量,以此在特定的数据库栏中兼容,那么你可以使用以下语句:  SELECT CAST(CONVERT(CHAR(10),CURRENT_TIMESTAMP,102) AS DATETIME  返回值将是 yy.mm.dd 00:00:00(如12:00AM作为时间戳;CURRENT_TIMESTAMP的时间信息将被丢弃。)
      

  3.   

    数据类型转换
    在 Transact-SQL 中,可能有两个级别的数据类型转换: 当一个对象的数据移动到另一个对象,或两个对象之间的数据进行比较或组合时,数据可能不得不从一个对象的数据类型转换为另一个对象的数据类型。
    当将来自 Transact-SQL 结果列、返回代码或输出参数的数据移动到程序变量中时,必须将这些数据从 Microsoft® SQL Server™ 数据类型转换成该变量的数据类型。 
    数据类型转换有两种: 隐性转换对于用户是不可见的。 
    SQL Server 自动将数据从一种数据类型转换成另一种数据类型。例如,如果一个 smallint 变量和一个 int 变量相比较,这个 smallint 变量在比较前即被隐性转换成 int 变量。显式转换使用 CAST 或 CONVERT 函数。 
    CAST 和 CONVERT 函数将数值从一个数据类型(局部变量、列或其它表达式)转换到另一个数据类型。例如,下面的 CAST 函数将数值 $157.27 转换成字符串 '$157.27':CAST ( $157.27 AS VARCHAR(10) )CAST 函数基于 SQL-92 标准并且优先于 CONVERT。当从一个 SQL Server 对象的数据类型向另一个转换时,一些隐性和显式数据类型转换是不支持的。例如,nchar 数值根本就不能被转换成 image 数值。nchar 只能显式地转换成 binary,隐性地转换到 binary 是不支持的。nchar 可以显式地或者隐性地转换成 nvarchar。 当处理 sql_variant 数据类型时,SQL Server 支持将具有其它数据类型的对象隐性转换成 sql_variant 类型。然而,SQL Server 并不支持从 sql_variant 数据隐性地转换到其它数据类型的对象。
      

  4.   

    CAST 是 ANSI SQL 标准定义的,Convert 函数是 T_SQL 定义的,如果要写与标准SQL兼容的、可以移植的SQL脚本,最好使用 CAST 。
      

  5.   

    我当且仅当转换日期时间时才用CONVERT
      

  6.   

    convert支持时间格式,其它无区别