개발/DB

[MySQL] 현재 시간에 시간 더하기(DATE_ADD, DATE_SUB 함수)

JJ Dev. 2021. 12. 2. 21:51
반응형

 

테이블 설계 중 행사 혹은 이벤트의 기한을 설정하기 위해 DATE타입의 2개의 컬럼을 추가했다.

 

하나는 created_at,  하나는 expired_at이다. created_at은 행사가 만들어진 시간을 의미하고

expired_at는 이벤트 종료 시점 혹은 이벤트 신청 마감을 의미한다.(영어 단어 선택이 이상하다고 느껴지면 그냥 넘어가주자...)

 

이때 created_at의 경우 현재 시간이 필요하므로 그냥 NOW()함수를 통해 쉽게 DATE를 추가할 수 있었다.

 

하지만 expired_at은 어떻게 해야할까?

 

예를 들어 현재 시점에서 3일 후가 행사 마감일이라면 이때 DB에 어떻게 삽입해야할까?

 

 

이때 쓰기 좋은 함수가 바로 DATE_ADD함수이다. 우선 사용 문법과 예시를 보자

 


 

시간 더하기(DATE_ADD) 사용법

DATE_ADD(기준이 되는 시간(날짜), interval)

이 때 interval에는 숫자 값과 SECOND, MINUTE, HOUR, DAY, MONTH, YEAR, ... 중 취사 선택하면 된다.

 

 

시간 더하기 사용 예시

INSERT INTO [테이블명] (created_at, expired_at) VALUES(NOW(), DATE_ADD(NOW(), 3 DAY))

이렇게 하면 created_at 컬럼에는 현재 날짜와 시간이 들어갈 것이고, expired_at에는 현재 시간 +3일에 해당하는 값이 들어갈 것이다.

created_at expired_at
2021-01-01 12:00:00 2021-01-04 12:00:00

 


시간 빼기(DATE_SUB) 사용법

DATE_SUB(기준이 되는 시간(날짜), interval)

이 때 DATE_ADD와 마찬가지로 interval에는 숫자 값과 SECOND, MINUTE, HOUR, DAY, MONTH, YEAR, ... 중 취사 선택하면 된다.

 

 

시간 빼기 사용 예시

INSERT INTO [테이블명] (created_at, expired_at) VALUES(NOW(), DATE_SUB(NOW(), 3 DAY))

이렇게 하면 created_at 컬럼에는 현재 날짜와 시간이 들어갈 것이고, expired_at에는 현재 시간 -3일에 해당하는 값이 들어갈 것이다.

created_at expired_at
2021-01-31 12:00:00 2021-01-28 12:00:00

 


 

마무리

 

사실 그냥 3 DAY만 써도 함수가 정상 작동하지만, 실제 문법은 INTERVAL 3 DAY이다. 참고하도록 하자. 

반응형

'개발 > DB' 카테고리의 다른 글

MySQL 무작위 SELECT 쿼리 (ORDER BY RAND())  (0) 2021.12.02