Maison > base de données > tutoriel mysql > Quelle est la précision en millisecondes du type de données « datetime » de SQL Server ?

Quelle est la précision en millisecondes du type de données « datetime » de SQL Server ?

Patricia Arquette
Libérer: 2025-01-13 08:39:42
original
249 Les gens l'ont consulté

How Accurate is Millisecond Precision in SQL Server's `datetime` Data Type?

Compréhension approfondie de la précision à la milliseconde des champs de date SQL Server

Lorsque vous utilisez SQL Server pour traiter les horodatages, il est essentiel de comprendre ses limites en matière de précision.

Considérez la structure de tableau suivante :

<code class="language-sql">CREATE TABLE [TESTTABLE]
(
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [DateField] [datetime] NULL,
    [StringField] [varchar](50),
    [IntField] [int] NULL,
    [BitField] [bit] NULL
)</code>
Copier après la connexion

Exécutez le code suivant :

<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

Le comportement attendu est de stocker l'horodatage avec une précision totale à la milliseconde. Cependant, lors de l'interrogation de la table à l'aide de l'instruction suivante :

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

Vous remarquerez peut-être que la colonne DateField affiche :

<code>2009-04-03 15:41:27.*377*</code>
Copier après la connexion

Limitation de précision

SQL Server ne stocke qu'environ 1/300 de seconde. Ces valeurs de temps tombent toujours sur 0, 3 et 7 millisecondes. Par exemple :

<code>00:00:00.000<br></br>
00:00:00.003<br></br>
00:00:00.007<br></br>
00:00:00.010<br></br>
00:00:00.013<br></br>
...</code>
Copier après la connexion

Atteignez une précision à la milliseconde

Si la précision à la milliseconde est critique, il n'existe pas de solution directe dans les types de données natifs de SQL Server. Vous pouvez envisager les méthodes suivantes :

  • 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îne : Stockez l'horodatage sous forme de chaîne dans un format connu. De plus, vous pouvez stocker des dates approximatives dans des types de dates natifs pour un accès plus rapide, mais avec moins de précision.

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