Wenn Sie SQL Server zum Verarbeiten von Zeitstempeln verwenden, ist es wichtig, dessen Präzisionseinschränkungen zu verstehen.
Beachten Sie die folgende Tabellenstruktur:
<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>
Führen Sie den folgenden Code aus:
<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>
Das erwartete Verhalten besteht darin, den Zeitstempel mit voller Millisekundengenauigkeit zu speichern. Allerdings beim Abfragen der Tabelle mit der folgenden Anweisung:
<code class="language-sql">select * from testtable with (NOLOCK)</code>
Möglicherweise stellen Sie fest, dass in der Spalte „DateField“ Folgendes angezeigt wird:
<code>2009-04-03 15:41:27.*377*</code>
SQL Server speichert nur etwa 1/300 Sekunde. Diese Zeitwerte liegen immer bei 0, 3 und 7 Millisekunden. Zum Beispiel:
<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>
Wenn die Genauigkeit im Millisekundenbereich von entscheidender Bedeutung ist, gibt es in den nativen Datentypen von SQL Server keine direkte Lösung. Sie können die folgenden Methoden in Betracht ziehen:
Das obige ist der detaillierte Inhalt vonWie genau ist die Millisekundengenauigkeit im Datentyp „datetime' von SQL Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!