2010-11-10 62 views

回答

4

這是因爲Data Type Precedence

當操作者結合不同的數據類型的兩個 表達式 對於數據類型的優先級的規則 指定與 優先級較低的數據類型轉換爲 具有較高優先級的數據類型。 如果轉換不是支持的 隱式轉換,則返回錯誤 。當兩個操作數 表達式具有相同的數據類型時, 操作的結果具有該 數據類型。

注:Can also subtract a number, in days, from a date參考:http://msdn.microsoft.com/en-us/library/ms189518.aspx

日期時間有presedence超過VARCHAR和INT有超過VARCHAR

presedence在您的例子

select (1 - '+') - CONVERT(datetime,'01/01/2010',101) 

這種成功是由於1 - '+' = 1,這可以從日期中減去。

select 1 - CONVERT(datetime,'01/01/2010',101) - '+' 

失敗監守1 anydate =日期,但是當你試圖以這樣的方式減去一個「+」你不能轉換日期時間。