选择什么:Cast
或Convert
表示日期时间(Microsoft SQL Server)?
我看过MSDN Specifications。乍一看似乎没有区别,除了语法:
CAST语法:
CAST ( expression AS data_type [ ( length ) ] )
CONVERT的语法:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
CAST 是ANSI标准,这使得它在不同的数据库平台上更具可移植性。
答案 0 :(得分:8)
convert
有一个可选参数style
,我建议使用convert
代替cast
。它有助于避免混淆。
例如,如果你写cast('20130302' as date)
,你会得到什么? 3月2日或2月3日?
此外,如果您在将日期转换为字符串时需要特定格式,则必须使用convert
答案 1 :(得分:2)
您发布的MSDN Specification链接,如果您仔细阅读,您会在G部分找到答案:
G. Using CAST and CONVERT with datetime data
以下示例显示当前日期和时间,使用CAST将当前日期和时间更改为字符数据类型,然后使用CONVERT以ISO 8901格式显示日期和时间。 /强> 的
SELECT
GETDATE() AS UnconvertedDateTime,
CAST(GETDATE() AS nvarchar(30)) AS UsingCast,
CONVERT(nvarchar(30), GETDATE(), 126) AS UsingConvertTo_ISO8601 ;
GO
这是结果集。
UnconvertedDateTime UsingCast UsingConvertTo_ISO8601
----------------------- ------------------------------ ------------------------------
2006-04-18 09:58:04.570 Apr 18 2006 9:58AM 2006-04-18T09:58:04.570
(1行受影响)
你可以清楚地看到差异。