Existe-t-il un analogue de GETDATE () qui renvoie DATETIME2


42

Selon MSDN, Getdate (), GetUtcDate () et CURRENT_TIMESTAMP renvoient tous DATETIME. J'ai fait un petit test qui confirme que:

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

(couper)

Existe-t-il une fonction similaire qui renvoie DATETIME2 (7)?

Réponses:


53

SYSDATETIMEretourne un DATETIME2objet.

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
Il y a aussi SYSUTCDATETIME()à compléter GETUTCDATE().
— Aaron Bertrand

1
@swasheck, bon exemple! cela montre clairement que, bien que la résolution de cette fonction semble meilleure, elle renvoie toujours des valeurs distantes d’environ 16 ms.
— Razvan Socol le

J'ai essentiellement écrit la même boucle, même si j'ai 5 colonnes dans mon tableau et que je boucle 100 fois. Les 33 premières lignes affichent exactement la même valeur datetime2, y compris les 7 décimales. Les 29 lignes suivantes affichent la même valeur datetime2, et ainsi de suite. Pouvez-vous suggérer pourquoi cela pourrait être ainsi? Je me souviens que dans un environnement différent, il y a quelque temps, j'ai appris que, même si les types de données haute précision liés à l'heure sont précis à autant de décimales, l'horloge système de la machine qui exécute la requête ne met pas nécessairement à jour l'heure système toutes les 0,000001 secondes. Cela pourrait-il être la cause?
— Youcantryreachingme
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.