Eyv*_*ind 5 sql-server implicit-conversion
据我所知,根据此图表,从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)
Run Code Online (Sandbox Code Playgroud)
我在SQL Server 2012(版本11.0.3128)上运行它.
刚刚发现这个连接帖子:
其中微软有以下声明:
Microsoft 发布于 2008 年 5 月 3 日 13:23 经过一番认真的讨论后,我们认为当前的设计很好,特别是考虑到这不是一个有趣的场景,而且我们已经支持新日期/时间类型的显式转换。
另一方面,我们也认为这不一定是一件好事,因为我们支持对现有类型的太多隐式转换。与二进制的转换是一件危险的事情,需要显式转换是有意义的。不幸的是,ALTER TABLE 行为与隐式转换相关,但您始终可以通过创建新列、发出更新,然后删除旧列(如果这是您担心的主要情况)来解决它。
因此,如果没有强烈反对,我们将执行以下操作: - 修复 BOL 以表明不存在从 binary/varbinary 到新日期/时间类型的隐式转换支持 - 将其关闭为“按设计”
谢谢
因此,他们似乎决定禁止这种隐式转换,但不更新该图。