MySQL에서 DATETIME 타입으로 저장된 날짜 값에서 특정 초(second)를 빼야 하는 경우가 종종 있습니다. 이 글에서는 INTERVAL 연산자를 활용해 테이블의 모든 날짜 레코드에서 원하는 만큼의 초를 손쉽게 차감하는 방법을 단계별로 알아보겠습니다.
1. 테스트용 테이블 생성하기
먼저 DATETIME 타입의 컬럼을 가진 테이블을 생성합니다.
mysql> create table DemoTable833(ArrivalTime datetime);
Query OK, 0 rows affected (0.79 sec)
2. 샘플 데이터 삽입하기
INSERT 명령어를 사용해 몇 개의 날짜 레코드를 입력합니다.
mysql> insert into DemoTable833 values('2019-01-10 12:40:50');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable833 values('2019-02-16 11:10:30');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable833 values('2018-03-17 10:00:10');
Query OK, 1 row affected (0.20 sec)3. 저장된 데이터 확인하기
SELECT 문으로 테이블에 저장된 모든 레코드를 조회합니다.
mysql> select *from DemoTable833;
실행 결과는 다음과 같습니다.
+---------------------+
| ArrivalTime |
+---------------------+
| 2019-01-10 12:40:50 |
| 2019-02-16 11:10:30 |
| 2018-03-17 10:00:10 |
+---------------------+
3 rows in set (0.00 sec)
4. INTERVAL 연산자로 초 빼기
MySQL에서 날짜 값에서 초를 차감하려면 컬럼명 - INTERVAL n SECOND 형식의 쿼리를 사용합니다. 아래 예제는 모든 레코드에서 10초를 빼는 쿼리입니다.
mysql> select ArrivalTime-interval 10 SECOND from DemoTable833;
실행 결과는 다음과 같습니다.
+--------------------------------+
| ArrivalTime-interval 10 SECOND |
+--------------------------------+
| 2019-01-10 12:40:40 |
| 2019-02-16 11:10:20 |
| 2018-03-17 10:00:00 |
+--------------------------------+
3 rows in set (0.00 sec)
추가 팁: 초 더하기와 UPDATE 활용
반대로 초를 더하고 싶다면 마이너스(-) 대신 플러스(+) 연산자를 사용하면 됩니다. 예를 들어 ArrivalTime + INTERVAL 10 SECOND처럼 작성할 수 있습니다.
또한 조회만 하는 것이 아니라 실제 데이터를 변경하고 싶다면 UPDATE 문과 함께 사용할 수 있습니다.
mysql> update DemoTable833 set ArrivalTime = ArrivalTime - interval 10 SECOND;
Query OK, 3 rows affected (0.15 sec)
이처럼 MySQL의 INTERVAL 연산자를 활용하면 SECOND뿐 아니라 MINUTE, HOUR, DAY 등 다양한 시간 단위를 자유롭게 가감할 수 있어 날짜 및 시간 데이터 처리에 매우 유용합니다.