Esto me hizo leer y la respuesta parece claramente insatisfactoria. La referencia de SQL más antigua que he podido encontrar (ANSI 92 disponible aquí ) en la sección 4.4.1 Características de los números afirma que
Lo que deja en manos de Microsoft cuál de los dos eligieron implementar para T-SQL y supongo que, en aras de la simplicidad, eligieron el truncamiento. Del artículo de wikipedia sobre redondeo parece que esta no era una decisión poco común en el pasado.
Es interesante notar que, de acuerdo con la documentación que encontré, solo las conversiones a números enteros causan truncamiento, las demás causan redondeo. Aunque por alguna extraña razón la conversión de money
a integer
parece ir en contra de la tendencia, ya que se le permite redondear.
From To Behaviour
numeric numeric Round
numeric int Truncate
numeric money Round
money int Round
money numeric Round
float int Truncate
float numeric Round
float datetime Round
datetime int Round
Tabla de aquí .