Problèmes de précision de la date et de l'heure de SQL Server
Lors de l'insertion de valeurs dans des colonnes datetime dans SQL Server, vous pouvez rencontrer une perte inattendue de millisecondes. Par exemple, la requête suivante :
<code class="language-sql">BEGIN INSERT INTO TESTTABLE (IntField, BitField, StringField, DateField) VALUES ('1', 1, 'hello', {ts '2009-04-03 15:41:27.378'}); SELECT SCOPE_IDENTITY() END</code>
En utilisant ensuite la requête SELECT * FROM TESTTABLE WITH (NOLOCK)
, la valeur de la colonne DateField peut apparaître comme :
<code>2009-04-03 15:41:27.*377*</code>
Explication de la différence de précision à la milliseconde
Cette perte apparente de millisecondes est due aux limitations de stockage de SQL Server. La précision temporelle de SQL Server est d'environ 1/300e de seconde et ces intervalles sont toujours de 0, 3 et 7 millisecondes. Par conséquent, dans l’exemple ci-dessus, la valeur est arrondie à l’intervalle de 3 millisecondes inférieur le plus proche, ce qui donne le suffixe .377 observé.
Relever le défi de la précision à la milliseconde
Si la précision à la milliseconde est essentielle, il n'y a pas de solution facile. Les solutions suggérées incluent :
Bien que ces méthodes ajoutent une complexité supplémentaire, elles peuvent fournir la précision nécessaire lorsqu'une précision à la milliseconde est absolument requise.
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!