Maison > base de données > tutoriel mysql > Pourquoi SQL Server perd-il des millisecondes lors du stockage des données DateTime ?

Pourquoi SQL Server perd-il des millisecondes lors du stockage des données DateTime ?

Susan Sarandon
Libérer: 2025-01-13 08:04:42
original
545 Les gens l'ont consulté

Why Does SQL Server Lose Milliseconds When Storing DateTime Data?

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

Récupération des données avec :

<code class="language-sql">select * from testtable with (NOLOCK)</code>
Copier après la connexion

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 :

  1. 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.

  2. 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!

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