# Money & SmallMoney Data Types in SQL Server

When working with financial data in SQL Server, two data types that are commonly used are Money and SmallMoney. Both data types are used to store monetary values, but they differ in terms of the range of values that they can store and the amount of storage space required.

## Money Data Type

The Money data type is used to store monetary values with a precision of up to 4 decimal places. The range of values that can be stored in a Money data type is between -922,337,203,685,477.5808 and 922,337,203,685,477.5807. The Money data type requires 8 bytes of storage space.

To declare a column as a Money data type, you can use the following syntax:

``` CREATE TABLE EmployeeSalary ( EmployeeID int, Salary Money ) ```

Here, we have created a table called EmployeeSalary with two columns – EmployeeID and Salary. The Salary column is of type Money.

## SmallMoney Data Type

The SmallMoney data type is used to store monetary values with a precision of up to 4 decimal places. The range of values that can be stored in a SmallMoney data type is between -214,748.3648 and 214,748.3647. The SmallMoney data type requires 4 bytes of storage space.

To declare a column as a SmallMoney data type, you can use the following syntax:

``` CREATE TABLE EmployeeSalary ( EmployeeID int, Salary SmallMoney ) ```

In this example, we have created a table called EmployeeSalary with two columns – EmployeeID and Salary. The Salary column is of type SmallMoney.

## Comparing Money and SmallMoney Data Types

The key difference between the Money and SmallMoney data types is the range of values that they can store. While the Money data type can store larger values, it also requires more storage space. The SmallMoney data type can store smaller values, but it is more efficient in terms of storage space.

Another important thing to note is that both data types support arithmetic operations. However, when performing arithmetic operations on columns of these data types, it is important to be aware of the precision and rounding issues that can arise. For example, if you add two values with different precision levels, the result may be rounded off or truncated.

## FAQs

### What is the difference between Money and SmallMoney data types?

The key difference between the Money and SmallMoney data types is the range of values that they can store. While the Money data type can store larger values, it also requires more storage space. The SmallMoney data type can store smaller values, but it is more efficient in terms of storage space.

### Can I perform arithmetic operations on columns of these data types?

Yes, both data types support arithmetic operations. However, when performing arithmetic operations on columns of these data types, it is important to be aware of the precision and rounding issues that can arise. For example, if you add two values with different precision levels, the result may be rounded off or truncated.

### How do I declare a column as a Money or SmallMoney data type?

To declare a column as a Money data type, you can use the following syntax:

``` CREATE TABLE EmployeeSalary ( EmployeeID int, Salary Money ) ```

To declare a column as a SmallMoney data type, you can use the following syntax:

``` CREATE TABLE EmployeeSalary ( EmployeeID int, Salary SmallMoney ) ```