본문 바로가기
Programming/MSSQL

MSSQL 날짜 계산 함수 DATEADD, DATEDIFF

by 제타 2018. 4. 21.
반응형

DATEADD는 시간을 더해주는 함수이고 DATEDIFF는 두 시간의 차이를 리턴해주는 함수이다.



먼저 날짜를 더하는 시간이다.

흔히 최근 6개월치만 조회하려고 할 떄 기준일자 >= DATEADD(DD,-6,GETDATE()) 이런식으로 짠다.

해당 함수를 활용하여 월의 첫째 날, 월의 마지막 날 등을 구해보도록 하자.


DATEADD 함수 - DATEADD(시간 단위, 더 할 수치, 기준 시간)

- 첫번째 파라메터에는 DAY 대신에 DD, MONTH 대신에 MM, YEAR 대신에 YY를 쓸 수 있다.


-- 1일 더하기

SELECT DATEADD(DAY,1,GETDATE())


-- 1월 더하기

SELECT DATEADD(MONTH,1,GETDATE())


-- 1년 더하기

SELECT DATEADD(YEAR,1,GETDATE())


-- 월의 첫째날

SELECT DATEADD(DAY,-(DAY(GETDATE()-1)), GETDATE())


-- 월의 마지막 날

SELECT DATEADD(MONTH,1,GETDATE())-DAY(GETDATE())


-- 작년 이번달 첫째 날

SELECT DATEADD(MONTH,-12,GETDATE())-(DAY(GETDATE())-1)



다음으로 DATEDIFF 함수를 보자


DATEDIFF 함수 - DATEDIFF(시간 단위, 시작 시간, 종료 시간)


GETDATE()+1 은 현재 시간에서 1일을 더해준다.


SELECT GETDATE() 'GETDATE() 시간', GETDATE()+1 AS 'GETDATE() +1 시간' 을 날려보면 

다음과 같은 결과가 나온다.


GETDATE() 시간                 GETDATE() +1 시간

2018-04-21 10:30:27.550 2018-04-22 10:30:27.550


DATEDIFF를 활용하여 두 시각 간의 차이를 시간 단위를 분, 초, 시, 일, 월, 년으로 구해보자.


SELECT DATEDIFF ( MI , GETDATE() , GETDATE()+1 ) 

-- 1440 분 (1일)


SELECT DATEDIFF ( S , GETDATE() , GETDATE()+1 ) 

-- 86400 초 (1일)


SELECT DATEDIFF ( HOUR , GETDATE() , GETDATE()+1 ) 

-- 24 시간 (1일)


SELECT DATEDIFF ( DAY , GETDATE() , GETDATE()+1 )

-- 1 일 (1일)


SELECT DATEDIFF ( MONTH , GETDATE() , GETDATE()+31 ) 

-- 1 개월 (31일)


SELECT DATEDIFF ( YEAR , GETDATE() , GETDATE()+730 ) 

-- 2 년 (365*2=730일)



반응형

'Programming > MSSQL' 카테고리의 다른 글

MSSQL 자리수 만큼 앞에 0 붙이기 (함수로 구현)  (0) 2018.04.21
MSSQL 날짜 포맷 변환 CONVERT  (0) 2018.04.21
MSSQL tempDB 옮기기  (0) 2018.04.18
MSSQL 숫자만 뽑아내기  (1) 2018.04.17
MSSQL 인코딩 확인 및 변경  (0) 2018.04.17