본문 바로가기

Program/MSSQL

Datediff

DATEDIFF

지정한 두 날짜 간에 교차되는 날짜와 시간 경계값을 반환합니다.

구문

DATEDIFF ( datepart , startdate , enddate )

인수

datepart

차이를 계산할 날짜 부분을 지정하는 매개 변수입니다.  다음은 Microsoft® SQL Server™에서 인식하는 날짜 부분과 약어입니다.

날짜 부분 약어
Year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms

startdate

계산의 시작 날짜입니다. startdate는 날짜 형식에서 datetime 또는 smalldatetime 값이나 문자열을 반환하는 식입니다.

smalldatetime은 분 단위로만 정확하므로 smalldatetime 값을 사용할 경우 초와 밀리초는 항상 0입니다.

연도의 마지막 두 자리 숫자만 지정할 경우 two digit year cutoff 구성 옵션 값의 마지막 두 자리 숫자보다 작거나 같은 값은 구분 기준 연도와 같은 세기에 해당합니다.  이 옵션 값의 마지막 두 자리 숫자보다 큰 값은 구분 기준 연도보다 이전 세기에 해당합니다.  예를 들어, two digit year cutoff가 2049(기본값)일 경우 49는 2049년으로 해석되고 2050은 1950년으로 해석됩니다. 이러한 애매함을 피하기 위해 네 자리 연도를 사용하십시오.

시간 값 지정에 대한 자세한 내용은 시간 형식을 참조하십시오. 날짜 지정에 대한 자세한 내용은 datetime 및 smalldatetime을 참조하십시오.

enddate

계산의 종료 날짜입니다. enddate는 날짜 형식에서 datetime 또는 smalldatetime 값이나 문자열을 반환하는 식입니다.

반환 형식

integer

비고

enddate에서 startdate를 뺍니다.  startdateenddate보다 크면 음수 값이 반환됩니다.

DATEDIFF의 경우, 결과가 정수 값의 범위를 벗어나면 오류가 발생합니다.  밀리초의 경우, 최대값은 24일, 20시간, 31분, 23.647초입니다.  초의 경우, 최대값은 68년입니다.

분, 초, 밀리초 등 교차된 경계값을 계산하는 방법은 DATEDIFF의 결과가 모든 데이터 형식에서 일관성을 유지시킵니다.  결과는 첫 번째 날짜와 두 번째 날짜 사이에 겹쳐지는 datepart 경계값에 해당하는 부호 있는 정수값입니다.  예를 들어, 1월 4일 일요일과 1월 11일 일요일 사이의 주 수는 1입니다.

예제

다음은 pubs 데이터베이스의 titles 테이블에 대해 현재 날짜와 출판 날짜 간의 일 수 차이를 확인하는 예제입니다.

USE pubs
GO
SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days
FROM titles
GO