我正在尝试转换日期时间格式,转换功能未返回正确的值。
这是我的数据
2015-09-07 07:00:01.0730000 +08:00
我的查询
select convert(varchar(16), '2015-09-07 07:00:01.0730000 +08:00', 103)
但它返回
2015-09-07 07:00
预期结果
07/09/2015 07:00
在文档中解释了这个奥秘:
当expression是日期或时间数据类型时,样式可以是下表中显示的值之一。其他值被处理为0。从SQL Server 2012开始,从日期和时间类型转换为datetimeoffset时仅支持的样式为0或1。所有其他转换样式均返回错误9809。
也就是说,样式基于表达式,而不基于目标数据类型。我觉得这有点违反直觉。但是,这意味着103被忽略,因为参数是一个字符串而不是日期/时间数据类型。
因此,您只是将字符串转换为字符串,所以什么也没有发生。这个例子可能更清楚:
select convert(varchar(255), 'hello world', 103)
这与a无关datetime
,它会返回'hello world'
(请参阅此处)。
我发现这种奇怪的行为,但已记录在案,因此该行为是正确的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句