[MSSQL] 날짜, 시간 더하기 빼기 (DATEADD)
- 데이터베이스/MSSQL
- 2021. 7. 13.
SQL Server에서는 날짜, 시간을 더하거나 빼기 위해서는 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(YEAR, -1, '2021-07-12') AS [1년전]
, DATEADD(YEAR, 1, '2021-07-12') 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시간빼기]