Computer >> 컴퓨터 >  >> 프로그래밍 >> SQL Server

SQL Server DATEDIFF 함수 완벽 정리: 사용법과 실전 예제

이 글에서는 SQL Server의 날짜·시간 함수인 DATEDIFF()의 사용법을 구문과 구체적인 예제와 함께 자세히 살펴봅니다. 예제를 통해 함수의 동작 방식을 더욱 쉽게 이해하고 활용할 수 있습니다.

DATEDIFF 함수란?

DATEDIFF 함수는 SQL Server에서 지정한 시간 단위(datepart)를 기준으로 두 시간 값 사이의 차이를 반환하는 함수입니다. 이때 두 개의 시간 값은 반드시 날짜 또는 날짜와 시간을 포함한 표현식이어야 합니다.

구문

SQL Server에서 DATEDIFF 함수를 사용하는 기본 구문은 다음과 같습니다.

DATEDIFF(datepart, startdate, enddate)

매개변수

  1. datepart: 두 날짜(startdate와 enddate) 사이의 차이를 계산할 때 사용할 시간 단위입니다. 사용할 수 있는 값은 아래 표와 같습니다.

    설명
    year, yyyy, yy연도
    quarter, qq, q분기
    month, mm, m
    dayofyear, dy, y연중 몇 번째 날(일 단위)
    day, dd, d
    week, ww, wk
    weekday, dw, w요일
    hour, hh시간
    minute, mi, n
    second, ss, s
    millisecond, ms밀리초
  2. startdate, enddate: 차이를 계산할 시작 날짜와 종료 날짜입니다.

참고 사항

  • DATEDIFF 함수는 SQL Server 2017, 2016, 2014, 2012, 2008 R2, 2008, 2005 등 이후 버전에서 모두 사용할 수 있습니다.

사용 예제

다양한 시간 단위로 DATEDIFF 함수를 활용하는 예제를 살펴보겠습니다.

SELECT DATEDIFF(year, '2019/04/28', '2021/04/28');
-- 결과: 2

SELECT DATEDIFF(yyyy, '2019/04/28', '2021/04/28');
-- 결과: 2

SELECT DATEDIFF(yy, '2019/04/28', '2021/04/28');
-- 결과: 2

SELECT DATEDIFF(month, '2019/01/01', '2019/04/28');
-- 결과: 3

SELECT DATEDIFF(day, '2019/01/01', '2019/04/28');
-- 결과: 117

SELECT DATEDIFF(hour, '2019/04/28 08:00', '2019/04/28 10:45');
-- 결과: 2

SELECT DATEDIFF(minute, '2019/04/28 08:00', '2019/04/28 10:45');
-- 결과: 165

위 예제에서 볼 수 있듯이, year, yyyy, yy처럼 동일한 의미를 가진 약어들은 모두 같은 결과를 반환합니다. 또한 hour 단위로 계산할 경우 10:45 - 08:00 = 2시간 45분이지만, DATEDIFF는 지정한 단위만큼의 경계 횟수를 세기 때문에 2가 반환됩니다. 반면 minute 단위로 계산하면 전체 분 차이인 165가 나옵니다. 이처럼 DATEDIFF는 잘린(truncated) 값이 아닌 단위 경계의 개수를 반환한다는 점을 기억해두면 실무에서 유용하게 활용할 수 있습니다.