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

MySQL DATE_ADD() 함수로 날짜에 일수 더하는 방법

MySQL에서 날짜에 일수 추가하기

MySQL에서 특정 날짜에 일수를 더하려면 DATE_ADD() 함수를 사용하면 됩니다. 날짜에 일을 추가하는 기본 문법은 다음과 같습니다.

INSERT INTO yourTableName VALUES(DATE_ADD(now(), interval n day));

위 문법에서는 now() 대신 curdate()를 사용할 수도 있습니다. 두 함수의 차이점은 다음과 같습니다.

  • now() : 현재 날짜와 시간을 모두 저장합니다.
  • curdate() : 현재 날짜만 저장하며, 시간은 00:00:00으로 기록됩니다.

예제 테이블 생성

위 문법을 실제로 이해하기 위해 먼저 데모용 테이블을 생성해 보겠습니다.

mysql> create table addingDaysDemo
    -> (
    -> yourDateTime datetime
    -> );
Query OK, 0 rows affected (1.09 sec)

INSERT 문으로 날짜에 일수 더하기

이제 INSERT 문에서 now()curdate() 두 함수를 모두 사용하고, interval 키워드로 더할 일수를 지정해 보겠습니다. 각각 1일, 4일, 5일, 7일, 9일을 추가한 데이터를 삽입합니다.

mysql> insert into addingDaysDemo values(date_add(now(),interval 1 day));
Query OK, 1 row affected (0.14 sec)

mysql> insert into addingDaysDemo values(date_add(now(),interval 4 day));
Query OK, 1 row affected (0.17 sec)

mysql> insert into addingDaysDemo values(date_add(now(),interval 5 day));
Query OK, 1 row affected (0.14 sec)

mysql> insert into addingDaysDemo values(date_add(now(),interval 7 day));
Query OK, 1 row affected (0.17 sec)

mysql> insert into addingDaysDemo values(date_add(now(),interval 9 day));
Query OK, 1 row affected (0.15 sec)

mysql> insert into addingDaysDemo values(date_add(curdate(),interval 1 day));
Query OK, 1 row affected (0.18 sec)

mysql> insert into addingDaysDemo values(date_add(curdate(),interval 4 day));
Query OK, 1 row affected (0.16 sec)

mysql> insert into addingDaysDemo values(date_add(curdate(),interval 5 day));
Query OK, 1 row affected (0.17 sec)

mysql> insert into addingDaysDemo values(date_add(curdate(),interval 7 day));
Query OK, 1 row affected (0.12 sec)

mysql> insert into addingDaysDemo values(date_add(curdate(),interval 9 day));
Query OK, 1 row affected (0.15 sec)

결과 확인하기

SELECT 문을 사용해 테이블의 모든 레코드를 조회합니다.

mysql> select * from addingDaysDemo;

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

+---------------------+
| yourDateTime        |
+---------------------+
| 2018-12-14 15:36:57 |
| 2018-12-17 15:37:06 |
| 2018-12-18 15:37:12 |
| 2018-12-20 15:37:17 |
| 2018-12-22 15:37:21 |
| 2018-12-14 00:00:00 |
| 2018-12-17 00:00:00 |
| 2018-12-18 00:00:00 |
| 2018-12-20 00:00:00 |
| 2018-12-22 00:00:00 |
+---------------------+
10 rows in set (0.00 sec)

출력 결과를 보면 차이점을 명확하게 알 수 있습니다. now()를 사용한 레코드에는 시간 정보까지 함께 저장되어 있고, curdate()를 사용한 레코드는 시간이 00:00:00으로 고정되어 있습니다. 따라서 날짜와 시간이 모두 필요한 경우에는 now(), 순수하게 날짜만 다룰 때는 curdate()를 사용하는 것이 좋습니다.