Datatype |
Min |
Max |
Storage |
Type |
Notes |
---|---|---|---|---|---|
Bigint | -2^63 | 2^63-1 | 8 bytes | Exact | |
Int | -2,147,483,648 | 2,147,483,647 | 4 bytes | Exact | |
Smallint | -32,768 | 32,767 | 2 bytes | Exact | |
Tinyint | 0 | 255 | 1 bytes | Exact | |
Bit | 0 | 1 | 1 to 8 bit columns in the same table requires a total of 1 byte, 9 to 16 bits = 2 bytes, etc... | Exact | |
Decimal | -10^38+1 | 10^381 | Precision 1-9 = 5 bytes, precision 10-19 = 9 bytes, precision 20-28 = 13 bytes, precision 29-38 = 17 bytes | Exact | The Decimal and the Numeric data type is exactly the same. Precision is the total number of digits. Scale is the number of decimals. For both the minimum is 1 and the maximum is 38. |
Numeric | same as Decimal | same as Decimal | same as Decimal | Exact | |
Money | -2^63 / 10000 | 2^63-1 / 10000 | 8 bytes | Exact | |
Smallmoney | -214,748.3648 | 214,748.3647 | 4 bytes | Exact | |
Float | -1.79E + 308 | 1.79E + 308 | 4 bytes when precision is less than 25 and 8 bytes when precision is 25 through 53 | Approx | Precision is specified from 1 to 53. |
Real | -3.40E + 38 | 3.40E + 38 | 4 bytes | Approx | Precision is fixed to 7. |
Datetime | 1753-01-01 00:00:00.000 | 9999-12-31 23:59:59.997 | 8 bytes | Datetime | If you are running SQL Server 2008 or later and need milliseconds precision, use datetime2(3) instead to save 1 byte. |
Smalldatetime | 1900-01-01 00:00 | 2079-06-06 23:59 | Datetime | ||
Char | 0 chars | 8000 chars | Defined width | String | Fixed width |
Varchar | 0 chars | 8000 chars | 2 bytes + number of chars | String | Variable width |
Varchar(max) | 0 chars | 2^31 chars | 2 bytes + number of chars | String | Variable width |
Text | 0 chars | 2,147,483,647 chars | 4 bytes + number of chars | String | Variable width |
Nchar | 0 chars | 4000 chars | Defined width x 2 | Unicode | Fixed width |
Nvarchar | 0 chars | 4000 chars | Unicode | Variable width | |
Nvarchar(max) | 0 chars | 2^30 chars | Unicode | Variable width | |
Ntext | 0 chars | 1,073,741,823 chars | Unicode | Variable width | |
Binary | 0 bytes | 8000 bytes | Binary | Fixed width | |
Varbinary | 0 bytes | 8000 bytes | Binary | Variable width | |
Varbinary(max) | 0 bytes | 2^31 bytes | Binary | Variable width | |
Image | 0 bytes | 2,147,483,647 bytes | Binary | Variable width. Prefer to use the varbinary(max) type as the image type will be removed in future versions. | |
Sql_variant | Other | Stores values of various SQL Server-supported data types, except text, ntext, and timestamp. | |||
Timestamp | Other | Stores a database-wide unique number that gets updated every time a row gets updated. | |||
Uniqueidentifier | Other | Stores a globally unique identifier (GUID). | |||
Xml | Other | Stores XML data. You can store xml instances in a column or a variable. | |||
Cursor | Other | A reference to a cursor. | |||
Table | Other | Stores a result set for later processing. |