Тази статия предоставя паралелно сравнение на типовете данни за дата и час в SQL Server по отношение на техния обхват, точност и размер на съхранение.
Тип данни | Обхват | Точност | Размер на съхранение |
---|---|---|---|
дата | 0001-01-01 чрез 9999-12-31 | 1 ден | 3 байта |
дата и час | 1753-01-01 чрез 9999-12-31 00:00:00 чрез 23:59:59,997 | 0,00333 секунди | 8 байта |
datetime2 | 0001-01-01 чрез 9999-12-31 00:00:00 чрез 23:59:59,9999999 | 100 наносекунди | 6 до 8 байта* |
datetimeoffset | 0001-01-01 чрез 9999-12-31 00:00:00 чрез 23:59:59,9999999 -14:00 чрез +14:00 | 100 наносекунди | 8 до 10 байта* |
smalldatetime | 1900-01-01 чрез 2079-06-06 00:00:00 чрез 23:59:59 | 1 минута | 4 байта |
време | 00:00:00.0000000 чрез 23:59:59,9999999 | 100 наносекунди | 3 до 5 байта* |
* Имайте предвид, че изброените тук количества за съхранение са количествата, изброени в документацията на Microsoft. Тези типове данни обаче също използват 1 байт за съхранение на точността. Затова добавете 1 байт към изброените тук количества за по-пълна картина на изискванията за съхранение.
Например размерът на хранилището за datetime2 ще варира от 7 до 9 байта, ако включите допълнителния байт.
Преобразуване между данни от тези типове
Поради разликите в точността и обхвата между тези типове данни, трябва да бъдете особено внимателни, когато конвертирате между тях. По-специално, преобразуването от тип с по-висока прецизност към тип с по-ниска точност може да доведе до загуба на част от стойността, а останалата стойност да бъде закръглена нагоре.
Вижте Преобразуване между типове данни за дата и час в SQL Server за примери.