MySQL에서는 CONCAT() 함수를 활용하면 날짜(DATE) 필드와 시간(TIME) 필드를 하나로 연결해 DATETIME 값을 간단하게 만들 수 있습니다. 이번 글에서는 실제 예제를 통해 그 과정을 단계별로 살펴보겠습니다.
1단계: 데모 테이블 생성
먼저 배송 날짜(ShippingDate), 배송 시간(ShippingTime), 그리고 두 값을 저장할 배송 일시(Shippingdatetime) 컬럼을 포함하는 테이블을 생성합니다.
mysql> create table getDateTimeFieldsDemo
-> (
-> ShippingDate date,
-> ShippingTime time,
-> Shippingdatetime datetime
-> );
Query OK, 0 rows affected (0.50 sec)
2단계: 샘플 데이터 삽입
INSERT 문을 사용해 테이블에 여러 개의 레코드를 추가합니다.
mysql> insert into getDateTimeFieldsDemo(ShippingDate,ShippingTime) values('2018-01-21','09:45:34');
Query OK, 1 row affected (0.16 sec)
mysql> insert into getDateTimeFieldsDemo(ShippingDate,ShippingTime) values('2013-07-26','13:21:20');
Query OK, 1 row affected (0.13 sec)
mysql> insert into getDateTimeFieldsDemo(ShippingDate,ShippingTime) values('2017-12-31','15:31:40');
Query OK, 1 row affected (0.17 sec)
mysql> insert into getDateTimeFieldsDemo(ShippingDate,ShippingTime) values('2019-03-07','12:13:34');
Query OK, 1 row affected (0.41 sec)3단계: 현재 데이터 확인
SELECT 문으로 테이블의 전체 레코드를 조회해 보겠습니다.
mysql> select *from getDateTimeFieldsDemo;
실행 결과는 다음과 같습니다. Shippingdatetime 컬럼에는 아직 값이 입력되지 않아 NULL로 표시되는 것을 확인할 수 있습니다.
+--------------+--------------+------------------+
| ShippingDate | ShippingTime | Shippingdatetime |
+--------------+--------------+------------------+
| 2018-01-21 | 09:45:34 | NULL |
| 2013-07-26 | 13:21:20 | NULL |
| 2017-12-31 | 15:31:40 | NULL |
| 2019-03-07 | 12:13:34 | NULL |
+--------------+--------------+------------------+
4 rows in set (0.00 sec)
4단계: CONCAT()으로 DATE와 TIME 결합하기
다음 쿼리는 DATE 필드와 TIME 필드 사이에 공백(" ")을 넣어 연결한 뒤, 그 결과를 DATETIME 컬럼에 업데이트합니다.
mysql> update getDateTimeFieldsDemo set Shippingdatetime=concat(ShippingDate," ",ShippingTime);
Query OK, 4 rows affected (0.09 sec)
Rows matched: 4 Changed: 4 Warnings: 0
5단계: 최종 결과 확인
업데이트 후 테이블을 다시 조회하면 DATETIME 값이 정상적으로 저장된 것을 확인할 수 있습니다.
mysql> select *from getDateTimeFieldsDemo;
+--------------+--------------+---------------------+
| ShippingDate | ShippingTime | Shippingdatetime |
+--------------+--------------+---------------------+
| 2018-01-21 | 09:45:34 | 2018-01-21 09:45:34 |
| 2013-07-26 | 13:21:20 | 2013-07-26 13:21:20 |
| 2017-12-31 | 15:31:40 | 2017-12-31 15:31:40 |
| 2019-03-07 | 12:13:34 | 2019-03-07 12:13:34 |
+--------------+--------------+---------------------+
4 rows in set (0.00 sec)
이처럼 CONCAT() 함수에 날짜 필드와 시간 필드를 공백 한 칸으로 구분해 전달하기만 하면, 복잡한 형 변환 없이도 DATETIME 형식의 값을 손쉽게 얻을 수 있습니다. 날짜와 시간이 분리되어 저장된 기존 데이터를 통합할 때 매우 유용하게 활용할 수 있는 방법입니다.