Maison > base de données > tutoriel mysql > Pourquoi SQL Server perd-il des millisecondes lors de l'insertion de valeurs DateHeure ?

Pourquoi SQL Server perd-il des millisecondes lors de l'insertion de valeurs DateHeure ?

DDD
Libérer: 2025-01-13 08:32:44
original
575 Les gens l'ont consulté

Why Does SQL Server Lose Milliseconds When Inserting Datetime Values?

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>
Copier après la connexion

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>
Copier après la connexion

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 :

  • Champ numérique personnalisé : Stockez l'horodatage en tant que champ numérique personnalisé et reconstruisez-le lors de la récupération.
  • Stockage de chaînes : Stockez l'horodatage sous forme de chaîne dans un format connu.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal