Có một tương tự của GETDATE () trả về DATETIME2


42

Theo MSDN, Getdate (), GetUtcDate () và CURRENT_TIMESTAMP đều trả về DATETIME. Tôi đã chạy một bài kiểm tra ngắn, xác nhận rằng:

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

(bắn tỉa)

Có một chức năng tương tự trả về DATETIME2 (7) không?

Câu trả lời:


53

SYSDATETIMEtrả về một DATETIME2đối tượng

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
Ngoài ra còn có SYSUTCDATETIME()để bổ sung GETUTCDATE().
Aaron Bertrand

1
@swasheck, ví dụ hay! rõ ràng cho thấy rằng mặc dù độ phân giải của chức năng này có vẻ tốt hơn, nó vẫn trả về các giá trị cách nhau khoảng 16ms.
Razvan Socol

Về cơ bản tôi đã viết cùng một vòng lặp, mặc dù tôi có 5 cột trong bảng và tôi lặp 100 lần. 33 hàng đầu tiên hiển thị chính xác cùng một giá trị datetime2 - bao gồm tất cả 7 vị trí thập phân. 29 dòng tiếp theo hiển thị cùng giá trị datetime2 với nhau, v.v. Bạn có thể đề nghị tại sao điều này có thể được như vậy? Tôi nhớ lại ở một môi trường khác một thời gian trước khi biết rằng mặc dù các loại dữ liệu liên quan đến thời gian có độ chính xác cao chính xác đến rất nhiều vị trí thập phân, đồng hồ hệ thống trên máy chạy truy vấn không nhất thiết phải cập nhật thời gian hệ thống cứ sau 0,000001 giây. Điều này có thể là nguyên nhân?
youcantryreachingme
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.