datetime Cast或Convert?

Fab*_*ler 3 sql sql-server

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


我看过MSDN规范.乍一看似乎除了语法之外没有区别:

CAST的语法:

CAST ( expression AS data_type [ ( length ) ] )
Run Code Online (Sandbox Code Playgroud)

CONVERT的语法:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
Run Code Online (Sandbox Code Playgroud)

CAST是ANSI标准,这使得它更便于携带防空火炮不同的数据库平台.

Rom*_*kar 8

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

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

  • 实际上,你选择了一个不好的例子来证明你的情况.`YYYYMMDD`格式将始终*在SQL Server中明确地解释,因此`'20130302'将在2013年3月2日转换为没有格式说明符. (7认同)
  • 如果你把'cast('20130302'作为日期)`,我希望你得到2013-03-02,所以2013年3月,02.总是. (6认同)
  • 是的,或者像"07/05/12"这样的东西. (2认同)