Cet article fournit une comparaison côte à côte des types de données de date et d'heure dans SQL Server en ce qui concerne leur plage, leur précision et leur taille de stockage.
Type de données | Plage | Précision | Taille de stockage |
---|---|---|---|
date | 0001-01-01 par 9999-12-31 | 1 jour | 3 octets |
dateheure | 1753-01-01 par 9999-12-31 00:00:00 par 23:59:59.997 | 0,00333 seconde | 8 octets |
datetime2 | 0001-01-01 par 9999-12-31 00:00:00 par 23:59:59.9999999 | 100 nanosecondes | 6 à 8 octets* |
datetimeoffset | 0001-01-01 par 9999-12-31 00:00:00 par 23:59:59.9999999 -14:00 par +14:00 | 100 nanosecondes | 8 à 10 octets* |
smalldatetime | 1900-01-01 par 2079-06-06 00:00:00 par 23:59:59 | 1 minute | 4 octets |
heure | 00:00:00.0000000 par 23:59:59.9999999 | 100 nanosecondes | 3 à 5 octets* |
* Notez que les quantités de stockage répertoriées ici sont les quantités répertoriées dans la documentation Microsoft. Cependant, ces types de données utilisent également 1 octet pour stocker la précision. Par conséquent, ajoutez 1 octet aux quantités indiquées ici pour obtenir une image plus complète des besoins de stockage.
Par exemple, la taille de stockage pour datetime2 serait compris entre 7 et 9 octets si vous incluez l'octet supplémentaire.
Conversion entre les données de ces types
En raison des différences de précision et de plage entre ces types de données, vous devez faire très attention lors de la conversion entre eux. En particulier, la conversion d'un type de précision supérieure en un type de précision inférieure peut entraîner la perte d'une partie de la valeur et la valeur restante étant arrondie.
Consultez Conversion entre les types de données de date et d'heure dans SQL Server pour obtenir des exemples.