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

MySQL INTERVAL 키워드로 날짜 필드에 하루 추가하기

MySQL에서 날짜/시간 필드에 하루 더하기

MySQL에서는 INTERVAL 키워드와 DATE_ADD() 함수를 함께 사용하면 DATE 또는 DATETIME 필드에 손쉽게 하루(또는 원하는 기간)를 더할 수 있습니다. 이 글에서는 실제 예제를 통해 날짜 필드에 1일을 추가하는 과정을 단계별로 살펴보겠습니다.

1단계: 테이블 생성

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
   -> (
   -> DueDate date
   ->);
Query OK, 0 rows affected (2.11 sec)

2단계: 데이터 삽입

INSERT 명령을 사용하여 테이블에 샘플 데이터를 입력합니다.

mysql> insert into DemoTable values('2019-01-21');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('2018-12-31');
Query OK, 1 row affected (0.47 sec)
mysql> insert into DemoTable values('2018-12-30');
Query OK, 1 row affected (0.28 sec)
mysql> insert into DemoTable values('2017-02-26');
Query OK, 1 row affected (0.47 sec)

3단계: 현재 데이터 확인

SELECT 문으로 테이블의 전체 레코드를 조회합니다.

mysql> select *from DemoTable;

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

+------------+
| DueDate    |
+------------+
| 2019-01-21 |
| 2018-12-31 |
| 2018-12-30 |
| 2017-02-26 |
+------------+
4 rows in set (0.00 sec)

4단계: INTERVAL을 이용해 하루 추가

아래 쿼리처럼 UPDATE 문과 함께 date_add(DueDate, interval 1 day)를 사용하면 날짜 필드에 정확히 하루를 더할 수 있습니다.

mysql> update DemoTable
   -> set DueDate=date_add(DueDate,interval 1 day);
Query OK, 4 rows affected (0.21 sec)
Rows matched: 4 Changed: 4 Warnings: 0

5단계: 변경 결과 확인

업데이트 후 테이블의 레코드를 다시 한번 확인해 보겠습니다.

mysql> select *from DemoTable;

모든 날짜가 하루씩 증가한 것을 확인할 수 있습니다.

+------------+
| DueDate    |
+------------+
| 2019-01-22 |
| 2019-01-01 |
| 2018-12-31 |
| 2017-02-27 |
+------------+
4 rows in set (0.00 sec)

정리 및 참고 사항

위 결과에서 주목할 점은 월이나 연도의 경계에서도 날짜가 자동으로 올바르게 계산된다는 것입니다. 예를 들어 '2018-12-31'은 '2019-01-01'로, 윤년이 아닌 해의 2월 마지막 날인 '2017-02-26'은 '2017-02-27'로 정확히 처리되었습니다.

참고로 DATE_ADD(date, INTERVAL n unit) 구문에서 unit은 day 외에도 second, minute, hour, week, month, year 등 다양한 값을 사용할 수 있으며, 음수 값을 넣으면 날짜를 빼는 효과도 얻을 수 있습니다. 또한 MySQL 8.0부터는 동일한 기능을 하는 ADDDATE() 함수나 간결한 덧셈 연산자(DueDate + INTERVAL 1 DAY)도 활용 가능하므로 상황에 맞게 선택하면 됩니다.