在使用SQL Server處理時間戳記時,了解其精確度限制至關重要。
考慮以下表格結構:
<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>
執行以下程式碼:
<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>
預期行為是儲存具有完整毫秒精度的時間戳。但是,當使用以下語句查詢表格時:
<code class="language-sql">select * from testtable with (NOLOCK)</code>
您可能會注意到DateField欄位顯示:
<code>2009-04-03 15:41:27.*377*</code>
SQL Server 只儲存約 1/300 秒的時間。這些時間值總是落在 0、3 和 7 毫秒。例如:
<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>
如果毫秒精確度至關重要,SQL Server 的原生資料類型中沒有直接的解決方案。可以考慮以下方法:
以上是SQL Server 的「日期時間」資料類型中的毫秒精確度有多準確?的詳細內容。更多資訊請關注PHP中文網其他相關文章!