money and smallmoney (Transact-SQL)

Data types that represent monetary or currency values.

Data type

Range

Storage

money

-922,337,203,685,477.5808 to 922,337,203,685,477.5807

8 bytes

smallmoney

- 214,748.3648 to 214,748.3647

4 bytes

Remarks

The money and smallmoney data types are accurate to a ten-thousandth of the monetary units that they represent.

Use a period to separate partial monetary units, like cents, from whole monetary units. For example, 2.15 specifies 2 dollars and 15 cents.

These data types can use any one of the following currency symbols.

Currency or monetary data does not need to be enclosed in single quotation marks ( ' ). It is important to remember that while you can specify monetary values preceded by a currency symbol, SQL Server does not store any currency information associated with the symbol, it only stores the numeric value.

Converting money Data

When you convert to money from integer data types, units are assumed to be in monetary units. For example, the integer value of 4 is converted to the money equivalent of 4 monetary units.

The following example converts smallmoney and money values to varchar and decimal data types, respectively.

``````DECLARE @mymoney_sm smallmoney = 3148.29,
@mymoney    money = 3148.29;
SELECT  CAST(@mymoney_sm AS varchar) AS 'SM_MONEY varchar',
CAST(@mymoney AS decimal)    AS 'MONEY DECIMAL';
``````

Here is the result set.

``````SM_MONEY VARCHAR          MONEY DECIMAL
------------------------------ ----------------------
3148.29                        3148
(1 row(s) affected)
``````

Reference

ALTER TABLE (Transact-SQL)

CAST and CONVERT (Transact-SQL)

CREATE TABLE (Transact-SQL)

Data Types (Transact-SQL)

DECLARE @local\_variable (Transact-SQL)

SET @local\_variable (Transact-SQL)

sys.types (Transact-SQL)