GETDATE(Transact-SQL)
적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW) Microsoft Fabric의 SQL 분석 엔드포인트 Microsoft Fabric의 웨어하우스
현재 데이터베이스 시스템 타임스탬프를 데이터베이스 표준 시간대 오프셋 없이 datetime 값으로 반환합니다. 이 값은 SQL Server 인스턴스를 실행하는 컴퓨터의 운영 체제에서 파생됩니다.
참고
SYSDATETIME 및 SYSUTCDATETIME에는 GETDATE 및 GETUTCDATE보다 많은 소수 자릿수 초의 전체 자릿수가 있습니다. SYSDATETIMEOFFSET에는 시스템 표준 시간대 오프셋이 포함되어 있습니다. SYSDATETIME, SYSUTCDATETIME 및 SYSDATETIMEOFFSET은 모든 날짜 및 시간 유형의 변수에 할당할 수 있습니다.
Azure SQL Database(Azure SQL Managed Instance는 제외됨) 및 Azure Synapse Analytics는 UTC를 따릅니다. UTC 이외의 표준 시간대로 날짜 및 시간 정보를 해석해야 하는 경우 Azure SQL Database 또는 Azure Synapse Analytics에서 AT TIME ZONE을 사용합니다.
모든 Transact-SQL 날짜/시간 데이터 형식 및 함수에 대한 개요는 날짜/시간 데이터 형식 및 함수(Transact-SQL)를 참조하세요.
구문
GETDATE()
반환 형식
datetime
설명
Transact-SQL 문은 datetime 식을 참조할 수 있는 모든 곳에서 GETDATE를 참조할 수 있습니다.
GETDATE는 확정적이 아닌 함수입니다. 열에서 이 함수를 참조하는 뷰와 식은 인덱싱될 수 없습니다.
GETDATE() 함수와 함께 SWITCHOFFSET을 사용하면 쿼리 최적화 프로그램이 GETDATE 값에 대한 정확한 카디널리티 예측을 얻을 수 없기 때문에 쿼리가 느리게 실행될 수 있습니다. 따라서 다음 예와 같이 GETDATE 값을 미리 계산한 다음 해당 값을 쿼리에서 지정하는 것이 좋습니다. 또한 OPTION(RECOMPILE) 쿼리 힌트를 사용하여 다음 번에 같은 쿼리를 실행할 때 쿼리 최적화 프로그램이 쿼리 계획을 다시 컴파일하도록 합니다. 최적화 프로그램은 GETDATE()에 대한 정확한 카디널리티 예측을 갖게 되므로 보다 효율적인 쿼리 계획을 생성합니다.
DECLARE @dt datetimeoffset = switchoffset (CONVERT(datetimeoffset, GETDATE()), '-04:00');
SELECT * FROM t
WHERE c1 > @dt OPTION (RECOMPILE);
예
다음 예에서는 현재 날짜 및 시간을 반환하는 6개의 SQL Server 시스템 함수를 사용하여 시간, 날짜 또는 두 가지 모두 반환합니다. 값은 순차적으로 반환되므로 소수 자릿수 초가 서로 다를 수 있습니다.
A. 현재 시스템의 날짜 및 시간 가져오기
SELECT SYSDATETIME()
,SYSDATETIMEOFFSET()
,SYSUTCDATETIME()
,CURRENT_TIMESTAMP
,GETDATE()
,GETUTCDATE();
결과 집합은 다음과 같습니다.
SYSDATETIME() 2007-04-30 13:10:02.0474381
SYSDATETIMEOFFSET()2007-04-30 13:10:02.0474381 -07:00
SYSUTCDATETIME() 2007-04-30 20:10:02.0474381
CURRENT_TIMESTAMP 2007-04-30 13:10:02.047
GETDATE() 2007-04-30 13:10:02.047
GETUTCDATE() 2007-04-30 20:10:02.047
B. 현재 시스템의 날짜 가져오기
SELECT CONVERT (date, SYSDATETIME())
,CONVERT (date, SYSDATETIMEOFFSET())
,CONVERT (date, SYSUTCDATETIME())
,CONVERT (date, CURRENT_TIMESTAMP)
,CONVERT (date, GETDATE())
,CONVERT (date, GETUTCDATE());
결과 집합은 다음과 같습니다.
SYSDATETIME() 2007-05-03
SYSDATETIMEOFFSET() 2007-05-03
SYSUTCDATETIME() 2007-05-04
CURRENT_TIMESTAMP 2007-05-03
GETDATE() 2007-05-03
GETUTCDATE() 2007-05-04
C. 현재 시스템의 시간 가져오기
SELECT CONVERT (time, SYSDATETIME())
,CONVERT (time, SYSDATETIMEOFFSET())
,CONVERT (time, SYSUTCDATETIME())
,CONVERT (time, CURRENT_TIMESTAMP)
,CONVERT (time, GETDATE())
,CONVERT (time, GETUTCDATE());
결과 집합은 다음과 같습니다.
SYSDATETIME() 13:18:45.3490361
SYSDATETIMEOFFSET() 13:18:45.3490361
SYSUTCDATETIME() 20:18:45.3490361
CURRENT_TIMESTAMP 13:18:45.3470000
GETDATE() 13:18:45.3470000
GETUTCDATE() 20:18:45.3470000
예: Azure Synapse Analytics 및 분석 플랫폼 시스템(PDW)
다음 예에서는 현재 날짜 및 시간을 반환하는 3개의 SQL Server 시스템 함수를 사용하여 시간, 날짜 또는 두 가지 모두 반환합니다. 값은 순차적으로 반환되므로 소수 자릿수 초가 서로 다를 수 있습니다.
D. 현재 시스템의 날짜 및 시간 가져오기
SELECT SYSDATETIME()
,CURRENT_TIMESTAMP
,GETDATE();
E. 현재 시스템의 날짜 가져오기
SELECT CONVERT (date, SYSDATETIME())
,CONVERT (date, CURRENT_TIMESTAMP)
,CONVERT (date, GETDATE());
F. 현재 시스템의 시간 가져오기
SELECT CONVERT (time, SYSDATETIME())
,CONVERT (time, CURRENT_TIMESTAMP)
,CONVERT (time, GETDATE());