Detta fick mig att läsa och svaret verkar vara klart otillfredsställande. Den tidigaste SQL-referens jag har kunnat hitta (ANSI 92 tillgänglig här ) i avsnitt 4.4.1 Egenskaper för siffror uppger att
Vilket lämnar upp till Microsoft vilken av de två de valde att implementera för T-SQL och jag antar för enkelhetens skull att de valde trunkering. Från wikipediaartikeln om avrundning det verkar som att detta inte var ett ovanligt beslut förr i tiden.
Det är intressant att notera att enligt dokumentationen jag hittade är det bara konverteringar till heltal som orsakar trunkering, de andra orsakar avrundning. Även om konverteringen från money
av någon bisarr anledning till integer
verkar motverka trenden när den tillåts runda.
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
Tabell från här .