문자열 형태로 저장된 날짜 값을 str_to_date() 함수로 변환한 뒤 특정 일수를 더하고 싶다면, MySQL에서 제공하는 DATE_ADD() 함수를 활용하면 됩니다. 이번 글에서는 실제 예제를 통해 그 과정을 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 배송 날짜를 문자열(varchar)로 저장하는 테이블을 생성합니다.
mysql> create table DemoTable
-> (
-> ShippingDate varchar(100)
-> );
Query OK, 0 rows affected (0.67 sec)
2. 샘플 데이터 삽입하기
insert 명령을 사용해 몇 개의 레코드를 입력합니다. 날짜는 '일-월-연도' 형식의 문자열로 저장되어 있습니다.
mysql> insert into DemoTable values('06-01-2019');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('01-04-2017');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('29-06-2019');
Query OK, 1 row affected (0.47 sec)3. 저장된 데이터 확인하기
select 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
출력 결과
+--------------+
| ShippingDate |
+--------------+
| 06-01-2019 |
| 01-04-2017 |
| 29-06-2019 |
+--------------+
3 rows in set (0.00 sec)
4. str_to_date()와 DATE_ADD() 조합하기
아래는 str_to_date() 함수로 변환한 날짜에 일수를 더하는 쿼리입니다. 이 예제에서는 각 배송 날짜에 6일을 추가했습니다.
핵심은 str_to_date(ShippingDate,'%d-%m-%Y')로 문자열을 DATE 타입으로 변환한 후, DATE_ADD() 함수에 interval 6 day 옵션을 지정하여 원하는 일수만큼 더하는 것입니다.
mysql> select date_add(str_to_date(ShippingDate,'%d-%m-%Y'),interval 6 day) as newShippingDate from DemoTable;
출력 결과
+-----------------+
| newShippingDate |
+-----------------+
| 2019-01-12 |
| 2017-04-07 |
| 2019-07-05 |
+-----------------+
3 rows in set (0.00 sec)
결과를 보면 문자열이 표준 날짜 형식(YYYY-MM-DD)으로 변환되고, 각 날짜에 정확히 6일이 더해진 것을 확인할 수 있습니다. 만약 다른 기간을 더하고 싶다면 interval 뒤의 값과 단위(day, month, year 등)를 변경하면 됩니다.