[SQL] MySQL DATE_ADD(날짜 더하기) & DATE_SUB(날짜 빼기)

2023. 12. 13. 18:45DB/MYSQL

728x90

DATE_ADD (날짜 더하기), DATE_SUB(날짜 빼기)

-- 날짜더하기
DATE_ADD([DATE 타입 대상컬럼] , INTERVAL [시간 유형])
-- 날짜빼기
DATE_SUB([DATE 타입 대상컬럼] , INTERVAL [시간 유형])

 

기본 시간유형
- MICROSECOND(마이크로 초/백만분의 1초)
- SECOND (초)
- MINUTE (분)
- HOUR (시)
- DAY (일)
- WEEK (주)
- MONTH (달)
- QUARTER (분기)
- YEAR (년도)
/* 기본 시간유형 사용 예제 */

-- 한 달 더하기
select DATE_ADD(NOW() , INTERVAL 1 MONTH) ;

-- 한 달 빼기
DATE_SUB([DATE 타입 대상컬럼] , INTERVAL [시간 유형])
select DATE_SUB(NOW() , INTERVAL 1 MONTH) ;

 

시간 유형 조합
- SECOND_MICROSECOND (초.마이크로초)
- MINUTE_MICROSECOND (분:초.마이크로초)
- MINUTE_SECOND (분:초)
- HOUR_MICROSECOND (시간:분:초.마이크로초)
- HOUR_SECOND(시간:분:초)
- HOUR_MINUTE (시간:분)
- DAY_MICROSECOND (일 시간:분:초.마이크로초)
- DAY_SECOND (일 시간:분:초)
- DAY_MINUTE (일 시간:분)
- DAY_HOUR (일 시간)
- YEAR_MONTH (년-월)
/* 시간 유형 조합 사용 예시1 */

-- 4일 3시간을 더하기
select NOW() cur , DATE_ADD(NOW(), INTERVAL '4 3' DAY_HOUR) cur_add4D3H;
-- 출력
'cur : 2023-12-13 19:17:54', 'cur_add4D3H : 2023-12-17 22:17:54'
/* 시간 유형 조합 사용 예시2 */

-- 4년 4개뤌을 뺴기
select NOW() cur , DATE_SUB(NOW(), INTERVAL '4 4' YEAR_MONTH) cur_sub4Y4M;
-- 출력
'cur : 2023-12-13 19:20:42', 'cur_sub4Y4M :2019-08-13 19:20:42'

 

 

[예제]오늘(특정날짜) 기준으로 하루, 일주일, 한달 데이터 가져오기 

-- 하루
SELECT * FROM TABLE WHERE DATE_COLUMN BETWEEN DATE_ADD(NOW(),INTERVAL -1 DAY) AND NOW();

-- 일주일
SELECT * FROM TABLE WHERE DATE_COLUMN BETWEEN DATE_ADD(NOW(),INTERVAL -1 WEEK) AND NOW();


-- 한달
SELECT * FROM TABLE WHERE DATE_COLUMN BETWEEN DATE_ADD(NOW(),INTERVAL -1 MONTH) AND NOW();

 

INTERVAL 을 사용한 날짜연산 함수 사용시 주의 할 점

 

 

 

참고 :

https://wondongho.tistory.com/129

https://needjarvis.tistory.com/793

728x90