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

MySQL에서 INSERT INTO SELECT와 DATE_FORMAT()로 동일한 테이블에 다른 날짜 형식의 레코드 삽입하기

동일한 테이블에 서로 다른 날짜 형식으로 날짜 데이터를 삽입해야 하는 경우가 있습니다. 이럴 때는 INSERT INTO ... SELECT 문과 DATE_FORMAT() 함수를 함께 사용하면 손쉽게 해결할 수 있습니다.


DATE_FORMAT() 함수는 datetime 타입의 값을 지정한 형식 문자열에 맞춰 변환해 주는 함수로, %W(요일), %e(일), %b(월 약어), %Y(연도), %r(12시간제 시간) 등 다양한 형식 지정자를 지원합니다.

1. 예제 테이블 생성

먼저 datetime 컬럼과 text 컬럼을 가진 테이블을 생성합니다.

mysql> create table DemoTable
    -> (
    -> DateOfJoining datetime,
    -> JoiningDate text
    -> );
Query OK, 0 rows affected (0.79 sec)

2. 샘플 데이터 삽입

insert 명령을 사용해 DateOfJoining 컬럼에 날짜 데이터를 입력합니다.

mysql> insert into DemoTable(DateOfJoining) values('2019-10-26 13:52:10');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable(DateOfJoining) values('2018-12-31 15:20:40');
Query OK, 1 row affected (0.16 sec)

3. 삽입된 데이터 확인

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

mysql> select *from DemoTable;

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

+---------------------+-------------+
| DateOfJoining      | JoiningDate |
+---------------------+-------------+
| 2019-10-26 13:52:10 | NULL       |
| 2018-12-31 15:20:40 | NULL       |
+---------------------+-------------+
2 rows in set (0.00 sec)

4. 다른 날짜 형식으로 레코드 삽입

이제 INSERT INTO ... SELECT 문과 DATE_FORMAT() 함수를 사용해 같은 테이블에 새로운 날짜 형식으로 데이터를 추가합니다.

mysql> insert into DemoTable(JoiningDate) select date_format(DateOfJoining , '%W %e, %b %Y @ %r') from DemoTable;
Query OK, 2 rows affected (0.13 sec)
Records: 2 Duplicates: 0 Warnings: 0

5. 최종 결과 확인

테이블을 다시 조회하면 기존의 datetime 값은 그대로 유지된 상태에서, 요일·월·연도·시간 정보가 포함된 새로운 형식의 문자열이 JoiningDate 컬럼에 추가된 것을 확인할 수 있습니다.

+---------------------+-------------------------------------+
| DateOfJoining      | JoiningDate                     |
+---------------------+-------------------------------------+
| 2019-10-26 13:52:10 | NULL                         |
| 2018-12-31 15:20:40 | NULL                         |
| NULL           | Saturday 26, Oct 2019 @ 01:52:10 PM |
| NULL           | Monday 31, Dec 2018 @ 03:20:40 PM  |
+---------------------+-------------------------------------+
4 rows in set (0.00 sec)

이처럼 INSERT INTO SELECT 문과 DATE_FORMAT() 함수를 조합하면 원본 데이터를 그대로 보존하면서, 원하는 형식으로 변환된 날짜 문자열을 동일한 테이블에 간편하게 추가할 수 있습니다. 보고서 작성이나 화면 출력용 데이터를 준비할 때 특히 유용하게 활용할 수 있는 방법입니다.