Numbers without a decimal point
| Data Type | Storage |
|---|---|
| bigint | 8 bytes |
| int | 4 bytes |
| smallint | 2 bytes |
| tinyint | 1 byte |

| Data Type | Format | Accuracy |
|---|---|---|
| time | hh:mm:ss[.nnnnnnn] |
100 nanoseconds |
| date | YYYY-MM-DD |
1 day |
| smalldatetime | YYYY-MM-DD hh:mm:ss |
1 minute |
| datetime | YYYY-MM-DD hh:mm:ss[.nnn] |
0.00333 second |
| datetime2 | YYYY-MM-DD hh:mm:ss[.nnnnnnn] |
100 nanoseconds |

IMPLICIT : performed automatically, behind the scenes
EXPLICIT : performed with functions CAST() and CONVERT()
CAST() and CONVERT() are used to convert from one data type to anotherCAST()
<aside> 💡 Syntax: CAST(expression AS data_type[(length)])
</aside>
SELECT
CAST(3.14 AS INT) AS DECIMAL_TO_INT,
CAST('3.14' AS DECIMAL(3,2)) AS STRING_TO_DECIMAL,
CAST(GETDATE() AS NVARCHAR(20)) AS DATE_TO_STRING,
CAST(GETDATE() AS FLOAT) AS DATE_TO_FLOAT;
CONVERT()
<aside> 💡 Syntax: CONVERT(data_type [(length)], expression, [,style])
</aside>
SELECT
CONVERT(INT, 3.14) AS DECIMAL_TO_INT,
CONVERT(DECIMAL(3,2), '3.14') AS STRING_TO_DECIMAL,
CONVERT(NVARCHAR(20), GETDATE(), 104) AS DATE_TO_STRING,
CONVERT(FLOAT, GETDATE()) AS DATE_TO_FLOAT;
CAST() vs CONVERT()