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

MySQL DATE_ADD() 함수로 여러 간격을 한 번에 추가하는 방법

MySQL에서 DATE_ADD() 함수는 날짜나 시간 값에 특정 간격을 더할 때 사용됩니다. 그렇다면 하나의 쿼리에서 두 개 이상의 서로 다른 간격(예: 몇 개월 + 몇 년)을 동시에 더하려면 어떻게 해야 할까요? 가장 대표적인 방법은 DATE_ADD() 함수를 중첩해서 사용하는 것입니다.

현재 날짜 및 시간 확인하기

먼저 현재 날짜와 시간을 확인해 보겠습니다.

mysql> select now();

출력 결과

+---------------------+
| now()               |
+---------------------+
| 2019-06-15 12:24:06 |
+---------------------+
1 row in set (0.00 sec)

테이블 생성하기

예제 진행을 위해 먼저 테이블을 생성합니다.

mysql> create table DemoTable
    ->(
    -> ArrivalDate datetime
    -> );
Query OK, 0 rows affected (1.15 sec)

여러 간격을 추가한 데이터 삽입하기

insert 명령을 사용해 테이블에 레코드를 삽입합니다. 아래 예제에서는 DATE_ADD() 함수를 중첩하여 여러 간격을 동시에 더하는 방식을 보여줍니다.

mysql> insert into DemoTable values(DATE_ADD(DATE_ADD(NOW(), INTERVAL 6
MONTH), INTERVAL 1 YEAR));
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable values(DATE_ADD(DATE_ADD(NOW(), INTERVAL 3
MONTH), INTERVAL 4 YEAR));
Query OK, 1 row affected (0.16 sec)

첫 번째 쿼리는 현재 시각에 6개월을 더한 뒤 다시 1년을 추가하고, 두 번째 쿼리는 3개월을 더한 뒤 4년을 추가합니다. 즉, 안쪽 DATE_ADD()가 먼저 실행되고 그 결과값에 바깥쪽 DATE_ADD()가 적용되는 구조입니다.

결과 확인하기

select 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select *from DemoTable;

출력 결과

+---------------------+
| ArrivalDate         |
+---------------------+
| 2020-12-15 12:23:39 |
| 2023-09-15 12:23:48 |
+---------------------+
2 rows in set (0.00 sec)

정리

DATE_ADD()를 중첩하면 월(MONTH), 연(YEAR), 일(DAY) 등 서로 다른 단위의 간격을 하나의 SQL 문 안에서 자유롭게 조합할 수 있습니다. 참고로 NOW() + INTERVAL 6 MONTH + INTERVAL 1 YEAR처럼 INTERVAL 표현식을 덧셈 연산자로 연결하는 방법도 동일한 결과를 얻을 수 있으므로, 상황에 맞게 선택하여 사용하면 됩니다.