Есть ли аналог GETDATE (), который возвращает DATETIME2


42

Согласно MSDN, Getdate (), GetUtcDate () и CURRENT_TIMESTAMP все возвращают DATETIME. Я провел короткий тест, который подтверждает, что:

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)?

Ответы:


53

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

13
Также есть SYSUTCDATETIME()дополнения GETUTCDATE().
Аарон Бертран

1
@swasheck, хороший пример! это ясно показывает, что хотя разрешение этой функции кажется лучше, она все равно возвращает значения, которые находятся на расстоянии около 16 мс.
Разван

По сути, я написал тот же цикл, хотя у меня в таблице 5 столбцов, и я повторяю цикл 100 раз. Первые 33 строки показывают одно и то же значение datetime2, включая все 7 десятичных знаков. Следующие 29 строк показывают одно и то же значение datetime2 и т. Д. Можете ли вы предложить, почему это может быть так? Я вспомнил, что в другой среде некоторое время назад выяснилось, что, хотя типы данных с высокой точностью, связанные со временем, с точностью до стольких десятичных разрядов, системные часы на машине, выполняющей запрос, не обязательно обновляют системное время каждые 0,000001 секунды. Может ли это быть причиной?
youcantryreachingme
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.