Gibt es ein Analogon von GETDATE (), das DATETIME2 zurückgibt?


42

Laut MSDN geben Getdate (), GetUtcDate () und CURRENT_TIMESTAMP alle DATETIME zurück. Ich habe einen kurzen Test durchgeführt, der Folgendes bestätigt:

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

(snip)

Gibt es eine ähnliche Funktion, die DATETIME2 (7) zurückgibt?

Antworten:


53

SYSDATETIMEGibt ein DATETIME2Objekt zurück.

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
Es gibt auch SYSUTCDATETIME()zu ergänzen GETUTCDATE().
Aaron Bertrand

1
@swasheck, gutes Beispiel! es zeigt deutlich, dass die Auflösung dieser Funktion zwar besser zu sein scheint, aber dennoch Werte zurückgibt, die etwa 16 ms voneinander entfernt sind.
Razvan Socol

Ich habe im Wesentlichen die gleiche Schleife geschrieben, obwohl ich 5 Spalten in meiner Tabelle habe und 100-mal schleife. Die ersten 33 Zeilen zeigen genau den gleichen datetime2-Wert - einschließlich aller 7 Dezimalstellen. Die nächsten 29 Zeilen zeigen den gleichen Wert für datetime2 usw. Können Sie vorschlagen, warum das so sein könnte? Ich erinnere mich, dass ich vor einiger Zeit in einer anderen Umgebung erfahren habe, dass die Systemuhr auf dem Computer, auf dem die Abfrage ausgeführt wird, die Systemzeit nicht unbedingt alle 0,000001 Sekunden aktualisiert, obwohl zeitbezogene Datentypen mit hoher Genauigkeit auf so viele Dezimalstellen genau sind. Könnte das die Ursache sein?
youcantryreachingme
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.