GETDATE(Transact-SQL)

적용 대상: SQL Server Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System(PDW)

현재 데이터베이스 시스템 타임스탬프를 데이터베이스 표준 시간대 오프셋 없이 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)를 참조하세요.

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());

참고 항목

CAST 및 CONVERT(Transact-SQL)