SQL Server:隐式数据类型转换图表

时间:2013-08-16 08:34:53

标签: sql-server implicit-conversion

据我所知,根据this chart,从VARBINARY到DATE的隐式转换应该没问题。但是,当我尝试以下代码时,SQL Server响应“不允许从数据类型varbinary(max)到日期的隐式转换。使用CONVERT函数运行此查询。”

CREATE TABLE [dbo].[CONVERSION_TEST](
[mydate] [date] NULL
) ON [PRIMARY]

GO


declare @bin varbinary(MAX) = NULL
insert into conversion_test values (@bin)

我在SQL Server 2012(版本11.0.3128)上运行它。

1 个答案:

答案 0 :(得分:4)

刚刚找到这个连线帖子:

Microsoft Connect

以下是Microsoft的声明:

  

微软发表于05/03/2008 13:23经过一番严肃的评论   讨论,我们认为目前的设计特别好   鉴于它不是一个有趣的场景,我们已经支持显式   转换为新的日期/时间类型。

     

另一方面,我们也认为它不一定是好的   给定的东西我们支持对现有的过多隐式转换   类型。转换成二进制文件是危险的,需要   显式转换是有道理的。 ALTER TABLE很不幸   行为与隐式转换相关联,但您始终可以工作   通过创建一个新列,发布更新,然后删除旧列   列,如果那是你担心的主要场景。

     

因此,如果没有强烈反对意见,我们将采取以下措施:    - 修复BOL以指示从二进制/ varbinary到新的日期/时间类型没有隐式转换支持    - 将其关闭为“按设计”

     

感谢

因此看起来他们决定不允许这种隐式转换,但不会更新该图表。