Lea*_*gue 5 sql-server getdate datetime2 sql-server-2008 sysdatetime
我已经在 SQL Server 2008 的存储过程中使用 SYSDATETIME 进行了一些测试。我已经设置了一个带有 IDENTITY 字段的 datetime2(7) 表。
我了解这种数据类型的精度和准确度之间的区别,但是,在从这个例子中插入多条记录时,我注意到一个不寻常的结果:
declare @counter int
set @counter = 0
while @counter < 100000
begin
set @counter = @counter + 1
INSERT INTO t ([now]) VALUES (SYSDATETIME())
end
Run Code Online (Sandbox Code Playgroud)
我循环使用插入语句 100,000 来确定 SYSDATETIME 是否按预期正常工作。但是,与 GETDATE 相比,它似乎并不准确。
2015-12-01 19:16:58.4102452
2015-12-01 19:16:58.4102452
2015-12-01 19:16:58.4112452
2015-12-01 19:16:58.4112452
2015-12-01 19:16:58.4122453
2015-12-01 19:16:58.4122453
2015-12-01 19:16:58.4132453
2015-12-01 19:16:58.4152455
2015-12-01 19:16:58.4152455
2015-12-01 19:16:58.4162455
2015-12-01 19:16:58.4162455
2015-12-01 19:16:58.4172456
2015-12-01 19:16:58.4172456
2015-12-01 19:16:58.4182456
2015-12-01 19:16:58.4182456
2015-12-01 19:16:58.4192457
2015-12-01 19:16:58.4192457
2015-12-01 19:16:58.4202457
2015-12-01 19:16:58.4202457
2015-12-01 19:16:58.4212458
Run Code Online (Sandbox Code Playgroud)
根据我的观察,最后四位小数似乎与前三位数字无关。这是已执行的 100,000 次插入的趋势。
如果您注意到这个小样本提取中的最后两位小数秒,它会从 0.4212457 跳到 0.4212458。
虽然它有 7 个位置的精度,但在我看来它的精度只有 3 个位置。最后四位数字以独立于时间的增量方式运行。我希望每次插入数据库时,时间值的最后 4 位小数将是完全随机的。
这是正确的说法,还是有正确的方法来获得真正准确/随机的时间?
| 归档时间: |
|
| 查看次数: |
486 次 |
| 最近记录: |