SQL Server Data Types: MONEY vs DECIMAL

I’ve seen some notes that we should avoid using MONEY data types in SQL Server. But why?

At first glance it seems that MONEY data types is similar to NUMERIC/DECIMAL with precision 19 and scale 4. It can be check very easily – just assign maximum value of MONEY data type to decimal variables with different precision.

money is like decimal(19.4)
As you see we could not able to assign such a big value to DECIMAL(18,4).
Great! Let’s go further. The next question that arise – what’s the difference between MONEY and DECIMAL(19,4)? It’s not so obvious to find it. It lies in rounding of arithmetic operations.
money and decimal rounding
The results of division are the same, but the results of division and multiplication are not. I suppose you understand where the rounding occurred.
I think it’s a good advice not to use MONEY data type in SQL Server databases.

Leave a Reply

Your email address will not be published. Required fields are marked *