Answers:
CONVERT
是SQL Server特定的,CAST
是ANSI。
CONVERT
可以更灵活地设置日期等格式。除此之外,它们几乎相同。如果您不关心扩展功能,请使用CAST
。
编辑:
如下面的评论中@beruic和@CF所述,使用隐式转换(即不使用CAST或CONVERT的转换)时,可能会导致精度损失。有关更多信息,请参见CAST和CONVERT,尤其是以下图形:SQL Server数据类型转换表。有了这些额外的信息,原始建议仍然保持不变。尽可能使用CAST。
Convert具有用于将日期转换为字符串的样式参数。
CAST是标准SQL,但CONVERT仅用于方言T-SQL。对于日期时间,我们在转换方面有一个小优势。
使用CAST,您可以指定表达式和目标类型;使用CONVERT,第三个参数表示转换的样式,某些转换支持该参数,例如字符串与日期和时间值之间的转换。例如,CONVERT(DATE,'1/2/2012',101)使用表示美国标准的样式101将文字字符串转换为DATE。
似乎没有人注意到的是可读性。有…
CONVERT(SomeType,
SomeReallyLongExpression
+ ThatMayEvenSpan
+ MultipleLines
)
……可能比……更容易理解
CAST(SomeReallyLongExpression
+ ThatMayEvenSpan
+ MultipleLines
AS SomeType
)
CAST(Column1 AS int)
阅读CONVERT(int, Column1)
甚至比长表达更合乎逻辑