将带毫秒的日期时间插入 SQL 服务器 table 问题
Inserting datetime with milliseconds into SQL Server table issue
我在 SQL 中发现了一些我认为与时间分辨率有关的东西。
这是我使用的示例:
CREATE TABLE #table
(
DTstamp DATETIME NOT NULL
)
INSERT INTO #table VALUES ('1 apr 2016 15:01:02:129')
SELECT DTstamp FROM #table
DROP TABLE #table
在 SQL Server Management Studio 中显示的 SELECT
结果在这种情况下偏移了 0.001:
2016-04-01 15:01:02.130
尝试多个值时,显示的结果通常在插入时间的 0.003 秒内。有谁知道差异来自哪里?
SQL版本:
Microsoft SQL Server 2012 (SP3) (KB3072779) - 11.0.6020.0 (X64)
Oct 20 2015 15:36:27
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
根据 MSDN https://msdn.microsoft.com/en-CA/library/ms187819.aspx,[DateTime] 数据类型的准确性是 "Rounded to increments of .000, .003, or .007 seconds"
要解决您的问题,请使用 DateTime2(3)
,如下所示:
CREATE TABLE #table
(
DTstamp DATETIME2(3) NOT NULL
)
INSERT INTO #table VALUES ('1 apr 2016 15:01:02:129')
SELECT DTstamp FROM #table
DROP TABLE #table
我在 SQL 中发现了一些我认为与时间分辨率有关的东西。 这是我使用的示例:
CREATE TABLE #table
(
DTstamp DATETIME NOT NULL
)
INSERT INTO #table VALUES ('1 apr 2016 15:01:02:129')
SELECT DTstamp FROM #table
DROP TABLE #table
在 SQL Server Management Studio 中显示的 SELECT
结果在这种情况下偏移了 0.001:
2016-04-01 15:01:02.130
尝试多个值时,显示的结果通常在插入时间的 0.003 秒内。有谁知道差异来自哪里?
SQL版本:
Microsoft SQL Server 2012 (SP3) (KB3072779) - 11.0.6020.0 (X64)
Oct 20 2015 15:36:27
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
根据 MSDN https://msdn.microsoft.com/en-CA/library/ms187819.aspx,[DateTime] 数据类型的准确性是 "Rounded to increments of .000, .003, or .007 seconds"
要解决您的问题,请使用 DateTime2(3)
,如下所示:
CREATE TABLE #table
(
DTstamp DATETIME2(3) NOT NULL
)
INSERT INTO #table VALUES ('1 apr 2016 15:01:02:129')
SELECT DTstamp FROM #table
DROP TABLE #table