Den här artikeln ger en jämförelse sida vid sida av datatyperna för datum och tid i SQL Server avseende deras räckvidd, noggrannhet och lagringsstorlek.
Datatyp | Räckvidd | Noggrannhet | Lagringsstorlek |
---|---|---|---|
datum | 0001-01-01 genom 9999-12-31 | 1 dag | 3 byte |
datumtid | 1753-01-01 genom 9999-12-31 00:00:00 genom 23:59:59.997 | 0,00333 sekunder | 8 byte |
datetime2 | 0001-01-01 genom 9999-12-31 00:00:00 genom 23:59:59.9999999 | 100 nanosekunder | 6 till 8 byte* |
datetimeoffset | 0001-01-01 genom 9999-12-31 00:00:00 genom 23:59:59.9999999 -14:00 genom +14:00 | 100 nanosekunder | 8 till 10 byte* |
smalldatetime | 1900-01-01 genom 2079-06-06 00:00:00 genom 23:59:59 | 1 minut | 4 byte |
tid | 00:00:00.0000000 genom 23:59:59.9999999 | 100 nanosekunder | 3 till 5 byte* |
* Observera att lagringsbeloppen som anges här är de belopp som anges i Microsofts dokumentation. Dessa datatyper använder dock också 1 byte för att lagra precisionen. Lägg därför till 1 byte till beloppen som anges här för en mer komplett bild av lagringskraven.
Till exempel lagringsstorleken för datetime2 skulle variera från 7 till 9 byte om du inkluderar den extra byten.
Konvertera mellan dessa typer av data
På grund av skillnaderna i noggrannhet och räckvidd mellan dessa datatyper måste du vara extra försiktig när du konverterar mellan dem. I synnerhet kan en konvertering från en typ med högre precision till en typ med lägre precision leda till att en del av värdet går förlorad och att det återstående värdet avrundas uppåt.
Kolla in Konvertera mellan datatyper för datum och tid i SQL Server för exempel.