Questo mi ha fatto leggere e la risposta sembra essere decisamente insoddisfacente, il primo riferimento SQL che sono riuscito a trovare (ANSI 92 disponibile qui ) nella sezione 4.4.1 Caratteristiche dei numeri afferma che
Il che lascia a Microsoft quale dei due hanno scelto di implementare per T-SQL e suppongo che per semplicità abbiano scelto il troncamento. Dall'articolo di Wikipedia sull'arrotondamento sembra che questa non fosse una decisione insolita all'epoca.
È interessante notare che, secondo la documentazione che ho trovato, solo le conversioni in numeri interi causano il troncamento, le altre causano l'arrotondamento. Anche se per qualche strano motivo la conversione da money
a integer
sembra invertire la tendenza in quanto è consentito arrotondare.
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
Tabella da qui .