we will discuss the difference between DateTime and DateTime2 in SQL Server
Differences between DateTime and DateTime2
Attribute | DateTime | DateTime2 |
Date Range | January 1, 1753, through December 31, 9999 | January 1, 0001, through December 31, 9999 |
Time Range | 00:00:00 through 23:59:59.997 | 00:00:00 through 23:59:59.9999999 |
Accuracy | 3.33 Milli-seconds | 100 nanoseconds |
Size | 8 Bytes | 6 to 8 Bytes (Depends on the precision) |
Default Value | 1900-01-01 00:00:00 | 1900-01-01 00:00:00 |
DATETIME2 has a bigger date range than DATETIME. Also, DATETIME2 is more accurate than DATETIME. So I would recommend using DATETIME2 over DATETIME when possible. I think the only reason for using DATETIME over DATETIME2 is for backward compatibility.
DateTime2 Syntax : DATETIME2 [ (fractional seconds precision) ]
With DateTime2
- Optional fractional seconds precision can be specified
- The precision scale is from 0 to 7 digits
- The default precision is 7 digits
- For precision 1 and 2, storage size is 6 bytes
- For precision 3 and 4, storage size is 7 bytes
- For precision 5, 6 and 7, storage size is 8 bytes
DECLARE @TempTable TABLE
(
DateTime2Precision1 DATETIME2(1),
DateTime2Precision2 DATETIME2(2),
DateTime2Precision3 DATETIME2(3),
DateTime2Precision4 DATETIME2(4),
DateTime2Precision5 DATETIME2(5),
DateTime2Precision6 DATETIME2(6),
DateTime2Precision7 DATETIME2(7)
)
Insert DateTime value into each column
INSERT INTO @TempTable VALUES
(
'2015-10-20 15:09:12.1234567',
'2015-10-20 15:09:12.1234567',
'2015-10-20 15:09:12.1234567',
'2015-10-20 15:09:12.1234567',
'2015-10-20 15:09:12.1234567',
'2015-10-20 15:09:12.1234567',
'2015-10-20 15:09:12.1234567'
)
The following query retrieves the prcision, the datetime value, and the storage size.
SELECT 'Precision - 1' AS [Precision],
DateTime2Precision1 AS DateValue,
DATALENGTH(DateTime2Precision1) AS StorageSize
FROM @TempTable
UNION ALL
SELECT 'Precision - 2',
DateTime2Precision2,
DATALENGTH(DateTime2Precision2) AS StorageSize
FROM @TempTable
UNION ALL
SELECT 'Precision - 3',
DateTime2Precision3,
DATALENGTH(DateTime2Precision3)
FROM @TempTable
UNION ALL
SELECT 'Precision - 4',
DateTime2Precision4,
DATALENGTH(DateTime2Precision4)
FROM @TempTable
UNION ALL
SELECT 'Precision - 5',
DateTime2Precision5,
DATALENGTH(DateTime2Precision5)
FROM @TempTable
UNION ALL
SELECT 'Precision - 6',
DateTime2Precision6,
DATALENGTH(DateTime2Precision6)
FROM @TempTable
UNION ALL
SELECT 'Precision - 7',
DateTime2Precision7,
DATALENGTH(DateTime2Precision7) AS StorageSize
FROM @TempTable
Notice as the precision increases the storage size also increases
0 comments:
Post a Comment
Note: only a member of this blog may post a comment.