Cela m'a fait lire et la réponse semble être nettement insatisfaisante, La première référence SQL que j'ai pu trouver (ANSI 92 disponible ici ) dans la section 4.4.1 Caractéristiques des nombres déclare que
Ce qui laisse à Microsoft le soin de choisir lequel des deux ils ont choisi d'implémenter pour T-SQL et je suppose que pour des raisons de simplicité, ils ont choisi la troncature. Extrait de l'article de Wikipédia sur l'arrondi il semble que ce n'était pas une décision rare à l'époque.
Il est intéressant de noter que, d'après la documentation que j'ai trouvée, seules les conversions en nombres entiers provoquent des troncatures, les autres provoquent des arrondis. Bien que pour une raison étrange, la conversion de money
en integer
semble inverser la tendance car il est autorisé à arrondir.
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
Tableau de ici .