CREATE TABLE #t(T DATETIME2(7));
GO
DECLARE @i INT ;
SET @i=1;
WHILE @i<10000 BEGIN ;
INSERT #t VALUES(CURRENT_TIMESTAMP) ;
SET @i=@i+1;
END ;
SELECT DISTINCT t
FROM #t
ORDER BY t ;
---
2013-01-28 13:23:19.4930000
2013-01-28 13:23:19.4970000
2013-01-28 13:23:19.5000000
2013-01-28 13:23:19.5030000
2013-01-28 13:23:19.5070000
2013-01-28 13:23:19.5100000
2013-01-28 13:23:19.5130000
(片段)
是否存在返回DATETIME2(7)的类似函数?
#1 楼
SYSDATETIME
返回一个DATETIME2
对象。CREATE TABLE #t(T DATETIME2(7));
GO
DECLARE @i INT ;
SET @i=1;
WHILE @i<10000 BEGIN ;
INSERT #t VALUES(SYSDATETIME()) ;
SET @i=@i+1;
END ;
SELECT DISTINCT t
FROM #t
ORDER BY t ;
2013-01-28 12:34:28.2514394
2013-01-28 12:34:28.2670399
2013-01-28 12:34:28.2826404
2013-01-28 12:34:28.2982409
2013-01-28 12:34:28.3138414
2013-01-28 12:34:28.3294419
2013-01-28 12:34:28.3450424
2013-01-28 12:34:28.3606429
2013-01-28 12:34:28.3762434
2013-01-28 12:34:28.3918439
2013-01-28 12:34:28.4074444
2013-01-28 12:34:28.4230449
2013-01-28 12:34:28.4386454
2013-01-28 12:34:28.4542459
2013-01-28 12:34:28.4698464
评论
还有SYSUTCDATETIME()来补充GETUTCDATE()。
–亚伦·伯特兰(Aaron Bertrand)
13年1月28日在19:36
@swasheck,很好的例子!它清楚地表明,尽管此函数的分辨率似乎更好,但它仍返回相距约16ms的值。
–拉兹万·索科尔(Razvan Socol)
17年2月24日在12:19
尽管实际上我的表中有5列并且循环了100次,但我基本上编写了相同的循环。前33行显示完全相同的datetime2值-包括所有7个小数位。接下来的29行显示彼此相同的datetime2值,依此类推。你能建议为什么会这样吗?我回想起在另一个环境中的一些时光倒流,虽然高精度的时间相关数据类型可以精确到许多小数位,但是运行查询的计算机上的系统时钟并不一定每0.000001秒更新一次系统时间。这可能是原因吗?
–youcantryreachingme
18-09-26在4:56