Uso de money y decimal en sqlserver
Al ejecutar esto:
declare @varMoney money
declare @varDecimal decimal(9,2)
set @varMoney = 125.83
set @varDecimal = 125.83
select (@varMoney/1000)*1000 as ResultadoMoney
select (@varDecimal/1000)*1000 as ResultadoDecimal
Obtengo los siguientes resultados
ResultadoMoney: 125.80
ResultadoDecimal: 125.83
La pregunta es: ¿Dónde quedaron las 3 decimas?
Al dividir @varMeoney/1000 el tipo de dato money redondea el resultado en cuatro decimales lo que da como resultado la eliminación de esas 3 digitos.
Esto puede ser grave al momento de generar cualquier calculo si no se tiene en consideración este funcionamiento.
La solucion es:
utilizar siempre decimales para realizar las operaciones por ejemplo:
@varMeoney/1000.0
De esta forma el ejemplo que estoy usando funcionaría correctamente si lo escribimos así:
declare @varMoney money
declare @varDecimal decimal(9,2)
set @varMoney = 125.83
set @varDecimal = 125.83
select (@varMoney/1000.0)*1000 as ResultadoMoney
select (@varDecimal/1000.0)*1000 as ResultadoDecimal
ResultadoMoney: 125.83
ResultadoDecimal: 125.83
Alguna duda????