테이블 설계 중 행사 혹은 이벤트의 기한을 설정하기 위해 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 |
---|