본문 바로가기
  • [성공하는 개발자] - Developer
DataBase/MSSQL

[MSSQL] 날짜, 시간 더하기 빼기 (DATEADD)

by Sein-JH 2022. 7. 11.
728x90

SQL Server에서는 날짜, 시간을 더하거나 빼기 위해서는 DATEADD 함수를 사용한다. 현재 날짜에서 하루를 빼서 전일 데이터를 조회할 수 있으며, 일자외에도 년 월 시간 등 기준일자에 원하는 기간 만큰 쉽게 더하거나 뺄수 있다.

 

 

MSSQL DATEADD 함수

날짜 빼기, 더하기 (년, 월, 일)

 일 계산 (DAY)

SELECT DATEADD(DAY, -10, '2021-07-12') AS [10일전] 
     , DATEADD(DAY, 10, '2021-07-12')  AS [10일후]

 

 월 계산 (MONTH)

SELECT DATEADD(MONTH, -1, '2021-07-12') AS [1개월전] 
     , DATEADD(MONTH, 1, '2021-07-12')  AS [1개월후]

■년 계산 (YEAR)

SELECT DATEADD(HOUR, -1, '2021-07-12 22:30:00') AS [1시간전] 
     , DATEADD(HOUR, 1, '2021-07-12 22:30:00')  AS [1시간후]

 

(활용 예시) 최근 30일 이내 직군별 입사 건수

SELECT job
     , COUNT(*) AS cnt
  FROM emp
 WHERE hiredate BETWEEN DATEADD(DAY, -30, GETDATE())
                    AND GETDATE()
 GROUP BY job

 

시간 빼기, 더하기 (시, 분, 초)

■ 시간 계산 (HOUR)

SELECT DATEADD(HOUR, -1, '2021-07-12 22:30:00') AS [1시간전] 
     , DATEADD(HOUR, 1, '2021-07-12 22:30:00')  AS [1시간후]

 

 분 계산 (MINUTE)

SELECT DATEADD(MINUTE, -10, '2021-07-12 22:30:00') AS [10분전] 
     , DATEADD(MINUTE, 10, '2021-07-12 22:30:00')  AS [10분후]

■ 초 계산 (SECOND)

SELECT DATEADD(SECOND, -30, '2021-07-12 22:30:00') AS [30초전] 
     , DATEADD(SECOND, 30, '2021-07-12 22:30:00')  AS [30초후]

 

DATEPART 코드표

명칭 DATEPART DATEPART(약어)
YEAR YY, YYYY
MONTH MM, M
DAY DD, D
HOUR HH
MINUTE MI, N
SECOND SS, S
밀리초 MILLISECOND MS 
WEEK WK, WW
분기 QUARTER QQ, Q

 

DATEPART 약어를 사용해도 동일한 결과가 계산된다.

SELECT DATEADD(DD, -1, '2021-07-12 22:30:00') AS [1일빼기] 
     , DATEADD(MM, -1, '2021-07-12 22:30:00') AS [1개월빼기] 
     , DATEADD(HH, -1, '2021-07-12 22:30:00') AS [1시간빼기]

 

참고 : https://gent.tistory.com/429?category=874679

댓글