Type de données DateTime de SQL Server : la milliseconde manquante
La précision des données est essentielle, en particulier lorsqu'il s'agit d'horodatages. Cependant, le type datetime
de SQL Server présente un problème courant : la perte de millisecondes. Cet article explore pourquoi cela se produit et propose des solutions.
Considérez ce scénario : les données sont insérées en utilisant :
<code class="language-sql">INSERT INTO TESTTABLE (IntField, BitField, StringField, DateField) VALUES ('1', 1, 'hello', {ts '2009-04-03 15:41:27.378'});</code>
Récupération des données avec :
<code class="language-sql">select * from testtable with (NOLOCK)</code>
révèle un DateField
tronqué : "2009-04-03 15:41:27.377". La dernière milliseconde est passée.
La racine du problème
La limitation inhérente du type de données datetime
en est la cause. datetime
de SQL Server ne prend en charge qu'une précision temporelle d'environ 1/300e de seconde (0, 3 ou 7 millisecondes). Les valeurs en dehors de ces incréments sont arrondies à l’inférieur. Ceci explique la milliseconde manquante dans notre exemple.
Atteindre une précision à la milliseconde
Pour maintenir une précision à la milliseconde, des méthodes alternatives sont nécessaires. Il n'existe pas une seule solution parfaite, mais deux approches courantes sont :
Champs numériques : Stockez l'horodatage sous forme de valeur numérique (par exemple, représentant les millisecondes depuis l'époque). Cela nécessite un code personnalisé pour convertir vers et depuis un format lisible par l'homme.
Représentation sous forme de chaîne : Stockez l'horodatage sous forme de chaîne en utilisant un format cohérent (par exemple, 'AAAA-MM-JJ HH:mm:ss.fff'). Vous pouvez éventuellement inclure un champ datetime
approximatif pour une interrogation plus rapide.
Les deux méthodes ajoutent de la complexité. Évaluez soigneusement le besoin d'une précision à la milliseconde par rapport aux frais supplémentaires de conception et de maintenance.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!