Denne artikel giver en side-om-side-sammenligning af datatyperne for dato og klokkeslæt i SQL Server med hensyn til deres rækkevidde, nøjagtighed og lagerstørrelse.
Datatype | Rækkevidde | Nøjagtighed | Opbevaringsstørrelse |
---|---|---|---|
dato | 0001-01-01 gennem 9999-12-31 | 1 dag | 3 bytes |
datotid | 1753-01-01 gennem 9999-12-31 00:00:00 gennem 23:59:59.997 | 0,00333 sekunder | 8 bytes |
datetime2 | 0001-01-01 gennem 9999-12-31 00:00:00 gennem 23:59:59.9999999 | 100 nanosekunder | 6 til 8 bytes* |
datetime offset | 0001-01-01 gennem 9999-12-31 00:00:00 gennem 23:59:59.9999999 -14:00 gennem +14:00 | 100 nanosekunder | 8 til 10 bytes* |
smalldatetime | 1900-01-01 gennem 2079-06-06 00:00:00 gennem 23:59:59 | 1 minut | 4 bytes |
tid | 00:00:00.0000000 gennem 23:59:59.9999999 | 100 nanosekunder | 3 til 5 bytes* |
* Bemærk, at lagerbeløbene, der er angivet her, er de beløb, der er angivet i Microsoft-dokumentationen. Disse datatyper bruger dog også 1 byte til at gemme præcisionen. Tilføj derfor 1 byte til de her anførte mængder for at få et mere komplet billede af lagerkravene.
For eksempel lagerstørrelsen for datetime2 vil variere fra 7 til 9 bytes, hvis du inkluderer den ekstra byte.
Konvertering mellem disse datatyper
På grund af forskellene i nøjagtighed og rækkevidde mellem disse datatyper, skal du være ekstra forsigtig, når du konverterer mellem dem. Især kan konvertering fra en type med højere præcision til en type med lavere præcision resultere i, at en del af værdien mistes, og at den resterende værdi rundes op.
Se Konvertering mellem dato og klokkeslæt datatyper i SQL Server for eksempler.