Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Conversioni e arrotondamenti impliciti

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 .