2013-08-16 28 views
5

據我所知,根據this chart,從VARBINARY到DATE的隱式轉換應該是OK。但是,當我嘗試下面的代碼時,SQL Server響應「不允許使用數據類型varbinary(max)的隱式轉換,使用CONVERT函數來運行此查詢。」SQL Server:隱式數據類型轉換圖

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)上運行此操作。

回答

4

剛剛發現這個連接後:

Microsoft Connect

已經從微軟發表聲明如下:

發佈Microsoft在05/03/2008在13:23一些嚴重的 後討論,我們認爲目前的設計很好,尤其是 ,因爲它不是一個有趣的場景,我們已經支持新的日期/時間類型的顯式 轉換。

另一方面,我們也認爲它不一定是好的 的事情,因爲我們支持現有的 類型的隱式轉換太多。從二進制轉換爲二進制是一件危險的事情,並且需要明確的轉換纔有意義。不幸的是,ALTER TABLE 行爲與隱式轉換相關,但您可以始終在其周圍工作 ,方法是創建一個新列,發出更新,然後刪除舊列 列,如果這是您擔心的主要情況。

所以,如果沒有強烈的反對,我們要做以下內容: - 固定的BOL表明,有一個從二進制/ VARBINARY的隱式轉換的支持,新的日期/時間類型 - 關閉這個爲'通過設計」

感謝

所以這樣看來,他們決定禁止這種隱式轉換,但不能更新圖。

+0

所以,這確實是一個文檔錯誤:(太糟糕了,我們真的可以使用該功能。 – Eyvind

+0

是的,我已經留下了對該文章的反饋,希望他們能夠更新它,但我沒有我的呼吸。 – steoleary

相關問題