Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

UPDATE 없이 MySQL INSERT 시 DATE_ADD로 날짜 값 설정하는 방법

이 글에서는 INSERT 쿼리만을 사용하여 날짜 데이터를 삽입하면서 동시에 원하는 만큼 더해진(갱신된) 값을 저장하는 방법을 예제와 함께 살펴보겠습니다. 별도의 UPDATE 문 없이 DATE_ADD() 함수를 활용하면 분, 시간, 일, 월, 년 단위로 날짜를 조정한 상태로 바로 저장할 수 있습니다.

1. 테이블 생성하기

먼저 datetime 타입의 컬럼을 가진 테이블을 생성합니다.

mysql> create table DemoTable816(DueDate datetime);
Query OK, 0 rows affected (0.45 sec)

2. DATE_ADD를 활용한 데이터 삽입

이제 insert 명령으로 레코드를 삽입합니다. 아래 쿼리는 INSERT를 수행하는 시점에 날짜에 분(minute), 시간(hour), 일(day), 월(month), 년(year) 단위의 간격을 더하는 방법을 보여줍니다.

mysql> insert into DemoTable816 values(date_add(now(),interval 3 minute));
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable816 values(date_add('2018-01-21 00:00:00',interval 3 Hour));
Query OK, 1 row affected (0.52 sec)
mysql> insert into DemoTable816 values(date_add('2016-11-11 12:40:00',interval 3 Day));
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable816 values(date_add('2018-12-01 11:00:00',interval 3 Month));
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable816 values(date_add('2011-03-21 10:00:00',interval 3 Year));
Query OK, 1 row affected (0.16 sec)

위 예제에서 눈여겨볼 점은 첫 번째 레코드처럼 now() 함수를 함께 사용하면 현재 시각 기준으로 3분 뒤의 시간이 자동 계산되어 저장된다는 것입니다. 나머지 레코드들은 지정된 특정 날짜에 각각 3시간, 3일, 3개월, 3년이 더해져 삽입됩니다.

3. 결과 확인하기

select 문을 사용하여 테이블에 저장된 모든 레코드를 조회합니다.

mysql> select *from DemoTable816;

실행 결과는 다음과 같습니다.

+---------------------+
| DueDate |
+---------------------+
| 2019-08-03 13:08:43 |
| 2018-01-21 03:00:00 |
| 2016-11-14 12:40:00 |
| 2019-03-01 11:00:00 |
| 2014-03-21 10:00:00 |
+---------------------+
5 rows in set (0.00 sec)

출력 결과를 보면 입력한 원본 날짜가 아니라 DATE_ADD()로 간격이 더해진 값들이 그대로 저장된 것을 확인할 수 있습니다. 이처럼 INSERT 구문 안에서 날짜 연산을 처리하면 불필요한 UPDATE 쿼리를 줄일 수 있어 코드가 간결해지고 성능 면에서도 유리합니다.