MySQL에서 DATE_ADD() 함수를 사용하지 않고도 NOW() 값이나 datetime 타입의 컬럼에 시간을 더할 수 있습니다. 이때 INTERVAL> 키워드를 활용하면 간단하게 처리할 수 있습니다. 이번 글에서는 실제 예제를 통해 datetime 컬럼에 6시간을 더하는 방법을 단계별로 살펴보겠습니다.
1. 테스트용 테이블 생성
먼저 datetime 타입의 컬럼을 포함하는 테이블을 생성합니다. 아래 쿼리를 사용하면 됩니다.
mysql> create table Add6Hour -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> ArrivalTime datetime -> ); Query OK, 0 rows affected (0.56 sec)
위 테이블은 자동 증가하는 기본키인 Id와 도착 시간을 저장하는 ArrivalTime 컬럼으로 구성되어 있습니다.
2. 데이터 삽입
INSERT 명령어를 사용해 현재 시간(NOW())을 저장하는 레코드를 추가합니다.
mysql> insert into Add6Hour(ArrivalTime) values(now()); Query OK, 1 row affected (0.12 sec)
3. 저장된 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from Add6Hour;
실행 결과는 다음과 같습니다.
+----+---------------------+ | Id | ArrivalTime | +----+---------------------+ | 1 | 2019-02-14 18:35:24 | +----+---------------------+ 1 row in set (0.00 sec)
4. NOW() 값에 6시간 더하기
이제 핵심 부분입니다. DATE_ADD() 함수 대신 + INTERVAL 6 HOUR 구문을 사용하면 손쉽게 6시간을 더할 수 있습니다.
mysql> select Id, ArrivalTime, (ArrivalTime + INTERVAL 6 HOUR) AS AfterAdding6HourINNOW from Add6Hour;
실행 결과는 다음과 같습니다.
+----+---------------------+-----------------------+ | Id | ArrivalTime | AfterAdding6HourINNOW | +----+---------------------+-----------------------+ | 1 | 2019-02-14 18:35:24 | 2019-02-15 00:35:24 | +----+---------------------+-----------------------+ 1 row in set (0.00 sec)
결과를 보면 원래 시간인 2019-02-14 18:35:24에 6시간이 더해져 2019-02-15 00:35:24로 출력된 것을 확인할 수 있습니다. 날짜가 바뀌는 경우에도 MySQL이 자동으로 올바르게 처리해 줍니다.
참고: 다양한 활용 방법
INTERVAL 키워드는 시간 단위를 자유롭게 지정할 수 있어 매우 유용합니다.
NOW() + INTERVAL 30 MINUTE— 현재 시간에 30분 더하기NOW() - INTERVAL 1 DAY— 현재 시간에서 하루 빼기NOW() + INTERVAL 2 WEEK— 현재 시간에 2주 더하기
이처럼 산술 연산자와 INTERVAL을 조합하면 DATE_ADD(), DATE_SUB() 함수 없이도 날짜와 시간 계산을 간결하게 처리할 수 있습니다.