มีอนาล็อกของ 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()
Aaron Bertrand

1
@swasheck เป็นตัวอย่างที่ดี! มันแสดงให้เห็นอย่างชัดเจนว่าถึงแม้ความละเอียดของฟังก์ชั่นนี้จะดีกว่า แต่ก็ยังส่งคืนค่าที่ห่างกันประมาณ 16ms
Razvan Socol

ฉันเขียนวนซ้ำเหมือนกันถึงแม้ว่าฉันจะมี 5 คอลัมน์ในตารางของฉันและฉันวนซ้ำ 100 ครั้ง 33 แถวแรกแสดงค่า datetime2 เดียวกันทั้งหมดรวมถึงทศนิยม 7 ตำแหน่ง 29 บรรทัดถัดไปแสดงค่าวันที่และเวลาเดียวกันกับแต่ละอื่น ๆ คุณช่วยแนะนำได้ไหมว่าทำไมเรื่องนี้ถึงเป็นเช่นนั้น? ฉันจำได้ว่าอยู่ในสภาพแวดล้อมที่แตกต่างกันเมื่อเวลาผ่านไปการเรียนรู้ว่าแม้ว่าชนิดข้อมูลที่เกี่ยวข้องกับเวลาที่มีความแม่นยำสูงนั้นมีความถูกต้องกับตำแหน่งทศนิยมจำนวนมากนาฬิการะบบของเครื่องที่เรียกใช้แบบสอบถามไม่จำเป็นต้องอัพเดตเวลาระบบทุก นี่อาจเป็นสาเหตุหรือไม่
youcantryreachingme
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.