什么时候应该使用CAST
vs. 一般指导CONVERT
?是否存在与选择其中一个相关的性能问题?是否更接近ANSI-SQL?
CONVERT
是SQL Server特定的,CAST
是ANSI.
CONVERT
更灵活的是你可以格式化日期等.除此之外,它们几乎是一样的.如果您不关心扩展功能,请使用CAST
.
编辑:
正如@beruic和@CF在下面的注释中所指出的,当使用隐式转换时(可能既不使用CAST也不使用CONVERT),可能会丢失精度.有关详细信息,请参阅CAST和CONVERT,尤其是此图:SQL Server数据类型转换图表.有了这些额外信息,原始建议仍然保持不变.尽可能使用CAST.
Convert具有日期到字符串转换的样式参数.
http://msdn.microsoft.com/en-us/library/ms187928.aspx
CAST是标准SQL,但CONVERT不是(仅用于方言T-SQL),在日期时间转换时我们有一个很小的优势
使用CAST,您可以指示表达式和目标类型; 使用CONVERT,第三个参数表示转换的样式,某些转换支持这种转换,例如字符串和日期和时间值.例如,CONVERT(DATE,'1/2/2012',101)使用表示美国标准的样式101将文字字符串转换为DATE.
问候,
为了扩展以上Shakti复制的答案,我实际上已经能够测量两个函数之间的性能差异。
我正在测试此问题的解决方案变体的性能,发现使用时,标准偏差和最大运行时间更大CAST
。
DateTime
似乎没有人注意到的是可读性。有...
CONVERT(SomeType, SomeReallyLongExpression + ThatMayEvenSpan + MultipleLines )
……可能比……更容易理解
CAST(SomeReallyLongExpression + ThatMayEvenSpan + MultipleLines AS SomeType )