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 :
CREATE TABLE [TESTTABLE] ( [ID] [int] IDENTITY(1,1) NOT NULL, [DateField] [datetime] NULL, [StringField] [varchar](50), [IntField] [int] NULL, [BitField] [bit] NULL )
Exécutez le code suivant :
BEGIN INSERT INTO TESTTABLE (IntField, BitField, StringField, DateField) VALUES ('1', 1, 'hello', {ts '2009-04-03 15:41:27.378'}); SELECT SCOPE_IDENTITY() END
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 :
select * from testtable with (NOLOCK)
Vous remarquerez peut-être que la colonne DateField affiche :
<code>2009-04-03 15:41:27.*377*</code>
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>
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 :
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!