Quelle est la représentation interne de datetime dans le serveur SQL?
-
16-09-2019 - |
Question
Quel est le sous-jacent des valeurs de structure de données datetime stockées dans SQL Server (2000 et 2005 si elle est différente)? À-dire jusqu'à la représentation des octets?
On peut supposer que la représentation par défaut que vous obtenez lorsque vous sélectionnez une colonne datetime est une valeur spécifique de la culture / sous réserve de modifications. Autrement dit, une structure sous-jacente que nous ne voyons pas est formaté pour obtenir AAAA-MM-JJ HH: MM:. SS.mmm
Je pose la question qu'il ya une opinion générale dans mon département qu'il est stocké dans la mémoire littéralement AAAA-MM-JJ HH: MM: SS.mmm mais je suis sûr que ce n'est pas le cas
La solution
Il est stockée en tant champ de 8 octets, d'une portée à partir 01.01.1753 par 9999-12-31, une précision de 0,00333 secondes.
Les détails sont censés être opaques, mais la plupart des ressources (1) , (2) que j'ai trouvé sur l'état Web les éléments suivants:
Les 4 premiers octets stockent le nombre de jours depuis l'époque de SQL Server (1 janvier 1900) et que le second 4 octets stocke le nombre de tiques après minuit, où un « tick » est de 3,3 millisecondes.
Les quatre premiers octets sont signés (peut être positif ou négatif), ce qui explique pourquoi les dates antérieures à l'époque peut être représentée.