2010-11-10 3 views

Répondre

4

Ceci est dû Data Type Precedence

Lorsqu'un opérateur combine deux expressions de différents types de données, les règles de priorité du type de données Précisons que le type de données avec la priorité inférieure est converti en type de données avec la priorité supérieure. Si la conversion n'est pas une conversion implicite prise en charge , une erreur est renvoyée . Lorsque les deux expressions d'opérande ont le même type de données, le résultat de l'opération a ce type de données .

Note: Can also subtract a number, in days, from a date Référence: http://msdn.microsoft.com/en-us/library/ms189518.aspx

Date heure a presedence sur varchar et int a presedence sur varchar

Dans votre exemple

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

Cela réussit dû à 1 - '+' = 1, qui peut être soustraite d'une date.

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

cette tentative échoue Becuase 1 anydate = une date, mais lorsque vous essayez de soustraire un « + » vous ne pouvez pas convertir datetime de telle manière.