Maison > base de données > tutoriel mysql > Pourquoi les millisecondes disparaissent-elles lors de l'insertion de valeurs datetime dans SQL Server ?

Pourquoi les millisecondes disparaissent-elles lors de l'insertion de valeurs datetime dans SQL Server ?

Linda Hamilton
Libérer: 2025-01-13 11:19:43
original
631 Les gens l'ont consulté

Why Do Milliseconds Disappear When Inserting datetime Values into SQL Server?

Précision datetime de SQL Server : le mystère de la milliseconde

Lors de l'insertion d'une valeur datetime avec des millisecondes dans une base de données SQL Server (par exemple, 2009-04-03 15:41:27.378), vous remarquerez peut-être une milliseconde apparemment perdue (par exemple, elle devient 2009-04-03 15:41 :27.377). Ce n'est pas un bug ; c'est une conséquence de la façon dont SQL Server gère la précision datetime.

Comment SQL Server stocke les valeurs temporelles

Le type de données

SQL Server datetime a une limitation : il ne stocke que les valeurs temporelles avec une précision d'environ 1/300e de seconde. Cela signifie que les millisecondes ne sont pas stockées avec précision ; ils sont arrondis à l'une des trois valeurs possibles : 0, 3 ou 7.

Le processus d'arrondi

Étant donné que la valeur insérée (27,378 millisecondes) se situe entre ces valeurs prises en charge, SQL Server l'arrondit à la milliseconde autorisée la plus proche (27,377). Cela explique l'écart apparent.

Maintenir la précision à la milliseconde : solutions de contournement

Pour préserver la précision à la milliseconde, envisagez ces alternatives :

  • Stockage numérique : Stockez la valeur datetime sous forme de type numérique (par exemple, bigint ou decimal) représentant le nombre de millisecondes depuis une époque spécifique. Convertissez-le en une valeur datetime lorsque cela est nécessaire pour l'affichage ou d'autres opérations.

  • Stockage basé sur une chaîne : Stockez la valeur datetime sous forme de chaîne en utilisant un format cohérent (comme aaaa-MM-jj HH:mm:ss.fff). Cela préserve la valeur complète de la milliseconde, mais nécessite une conversion pour les calculs de date/heure.

  • Approche hybride : Utilisez une colonne datetime pour le stockage approximatif de la date/heure (pour des raisons de performances) et une chaîne ou une colonne numérique distincte pour stocker la valeur exacte en millisecondes.

Ces approches garantissent que vos données millisecondes restent intactes, bien qu'avec une légère augmentation de la complexité.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal