DATETIME2 döndüren bir GETDATE () analogu var mı


42

MSDN'ye göre Getdate (), GetUtcDate () ve CURRENT_TIMESTAMP hepsi DATETIME döndürür. Bunu doğrulayan kısa bir test yaptım:

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

(Kesik)

DATETIME2 (7) döndüren benzer bir işlevi var mı?

Yanıtlar:


53

SYSDATETIMEbir DATETIME2nesneyi döndürür .

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
Orada da SYSUTCDATETIME()tamamlayacak GETUTCDATE().
Aaron Bertrand

1
@swasheck, iyi örnek! açıkça göstermektedir ki bu fonksiyonun çözünürlüğü daha iyi görünse de, yine de 16ms aralığındaki değerleri döndürür.
Razvan Socol

Aslında aynı döngüyü yazdım, ancak tablomda 5 sütun var ve 100 kez döngü yapıyorum. İlk 33 satır, 7 ondalık basamağın tamamı dahil, aynı datetime2 değerini gösterir. Sonraki 29 satır, birbirleriyle aynı datetime2 değerini, vb. Gösterir. Bunun neden böyle olabileceğini önerebilir misin? Bir süre önce farklı bir ortamda, yüksek hassasiyetli zamana bağlı veri türlerinin çok sayıda ondalık basamağa kadar doğru olmasına rağmen, sorguyu çalıştıran makinedeki sistem saatinin her 0.000001 saniyede bir sistem saatini güncellememesi gerektiğini hatırlıyorum. Nedeni bu olabilirmiydi?
youcantryreachingme
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.