4

选择什么:CastConvert日期时间(Microsoft SQL Server)?


我看过MSDN Specifications。乍一看似乎没有什么区别,除了语法:

CAST 的语法:

CAST ( expression AS data_type [ ( length ) ] )

转换的语法:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

而且CAST是 ANSI 标准,这使得它在不同的数据库平台上更具可移植性。

4

2 回答 2

9

convert有一个可选参数style,我建议使用convert而不是cast. 它有助于避免混淆。例如,如果你写cast('20130302' as date),你会得到什么?3 月 2 日还是 2 月 3 日?

此外,如果您在将日期转换为字符串时需要特定格式,则必须使用convert

于 2013-07-02T19:00:42.327 回答
2

您发布的MSDN 规范链接,如果您仔细阅读,您会在 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 行受影响)

您可以清楚地看到差异。

更新

检查这个:http: //blog.sqlauthority.com/2012/11/21/sql-server-display-datetime-in-specific-format-sql-in-sixty-seconds-033-video/

于 2013-07-02T18:59:02.587 回答