1
爲什麼:結果 「選擇整+日期時間+字符」 和 「選擇整+字符+日期時間」 的
select 1 - '+' - CONVERT(datetime,'01/01/2010',101)
...查詢返回的結果,:
select 1 - CONVERT(datetime,'01/01/2010',101) - '+'
。 ..給出錯誤?
爲什麼:結果 「選擇整+日期時間+字符」 和 「選擇整+字符+日期時間」 的
select 1 - '+' - CONVERT(datetime,'01/01/2010',101)
...查詢返回的結果,:
select 1 - CONVERT(datetime,'01/01/2010',101) - '+'
。 ..給出錯誤?
當操作者結合不同的數據類型的兩個 表達式 對於數據類型的優先級的規則 指定與 優先級較低的數據類型轉換爲 具有較高優先級的數據類型。 如果轉換不是支持的 隱式轉換,則返回錯誤 。當兩個操作數 表達式具有相同的數據類型時, 操作的結果具有該 數據類型。
注: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 =日期,但是當你試圖以這樣的方式減去一個「+」你不能轉換日期時間。