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

MySQL INSERT 시 DATE_ADD 함수로 날짜·시간 값 계산하여 저장하는 방법

MySQL에서 데이터를 삽입(INSERT)하는 과정에서 현재 시간이나 특정 날짜에 분, 시간, 일, 월, 년 등을 더한 값을 함께 저장해야 하는 경우가 종종 있습니다. 이럴 때 DATE_ADD() 함수를 사용하면 별도의 계산 없이 INSERT 쿼리 안에서 바로 원하는 날짜·시간 값을 만들어 저장할 수 있습니다.

아래 예제를 통해 실제 사용 방법을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

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

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

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

INSERT 쿼리 실행 시 DATE_ADD() 함수를 사용하면 기준 날짜에 원하는 단위만큼 더한 값이 그대로 저장됩니다. 아래 예제는 현재 시간(now())과 특정 날짜에 각각 다른 간격(interval)을 더해 삽입하는 방법을 보여줍니다.

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(): 현재 날짜와 시간을 반환합니다. 첫 번째 INSERT에서는 현재 시각에 3분을 더한 값이 저장됩니다.
  • 기준 날짜 문자열: '2018-01-21 00:00:00'처럼 직접 날짜를 지정할 수도 있습니다.
  • INTERVAL 단위: minute(분), hour(시간), day(일), month(월), year(년) 등 다양한 단위를 사용할 수 있으며, 숫자는 원하는 만큼 조절 가능합니다.

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)

결과를 보면 각 INSERT 문에서 지정한 만큼 날짜와 시간이 정확히 더해져 저장된 것을 확인할 수 있습니다. 예를 들어 '2016-11-11 12:40:00'에 3일을 더해 '2016-11-14 12:40:00'이 되었고, '2011-03-21 10:00:00'에 3년을 더해 '2014-03-21 10:00:00'이 되었습니다.

이처럼 DATE_ADD() 함수를 INSERT 문과 함께 사용하면 마감일(due date), 만료일, 예약 시간 등을 손쉽게 계산하여 저장할 수 있어 실무에서 매우 유용하게 활용됩니다.