据我所知,根据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)上运行它。
答案 0 :(得分:4)
刚刚找到这个连线帖子:
以下是Microsoft的声明:
微软发表于05/03/2008 13:23经过一番严肃的评论 讨论,我们认为目前的设计特别好 鉴于它不是一个有趣的场景,我们已经支持显式 转换为新的日期/时间类型。
另一方面,我们也认为它不一定是好的 给定的东西我们支持对现有的过多隐式转换 类型。转换成二进制文件是危险的,需要 显式转换是有道理的。 ALTER TABLE很不幸 行为与隐式转换相关联,但您始终可以工作 通过创建一个新列,发布更新,然后删除旧列 列,如果那是你担心的主要场景。
因此,如果没有强烈反对意见,我们将采取以下措施: - 修复BOL以指示从二进制/ varbinary到新的日期/时间类型没有隐式转换支持 - 将其关闭为“按设计”
感谢
因此看起来他们决定不允许这种隐式转换,但不会更新该图表。