DATETIME2를 반환하는 GETDATE ()의 아날로그가 있습니까?


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

SYSDATETIMEDATETIME2객체를 반환 합니다.

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 2012

테이블에 5 개의 열이 있고 100 회 반복하지만 본질적으로 동일한 루프를 작성했습니다. 처음 33 행은 소수점 7 자리를 포함하여 정확히 동일한 datetime2 값을 표시합니다. 다음 29 행은 서로 같은 datetime2 값을 표시합니다. 이것이 왜 그런지 제안 할 수 있습니까? 다른 환경에서는 고정밀 시간 관련 데이터 유형이 소수 자릿수까지 정확하지만 쿼리를 실행하는 컴퓨터의 시스템 시계가 0.000001 초마다 시스템 시간을 반드시 업데이트하지는 않습니다. 이것이 원인 일 수 있습니까?
youcantryreachingme
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.