sql >> Base de Datos >  >> RDS >> Sqlserver

Conversiones implícitas y redondeo

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í .