Чи є аналог 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 рядки показують точно таке ж значення timetime2 - включаючи всі 7 знаків після коми. Наступні 29 рядків показують те саме значення datetime2, як один одного, тощо. Чи можете ви підказати, чому це може бути так? Я згадую в іншому середовищі деякий час назад, коли я дізнався, що, хоча типи даних, пов'язані з високою точністю, точні до багатьох знаків після коми, системний годинник на машині, що виконує запит, не обов'язково оновлює системний час кожні 0,000001 секунди. Чи може це бути причиною?
youcantryreachingme
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.