MySQL에서 STR_TO_DATE() 함수를 사용하면 INSERT 쿼리 실행 시 미국식 날짜 형식(예: MM-DD-YYYY)을 MySQL이 인식할 수 있는 날짜·시간 형식으로 손쉽게 변환할 수 있습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
ShippingDatetime varchar(200)
);
Query OK, 0 rows affected (1.04 sec)2. STR_TO_DATE()를 활용한 데이터 삽입
INSERT 문에 STR_TO_DATE() 함수를 적용하면 문자열로 입력된 미국식 날짜가 자동으로 MySQL 형식으로 변환되어 저장됩니다. 아래 예제에서는 '%m-%d-%Y %H:%i' 포맷을 지정했습니다.
mysql> insert into DemoTable(ShippingDatetime) values(STR_TO_DATE('01-31-2012 01:23','%m-%d-%Y %H:%i'));
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(ShippingDatetime) values(STR_TO_DATE('12-01-2018 04:56','%m-%d-%Y %H:%i'));
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable(ShippingDatetime) values(STR_TO_DATE('04-17-2019 10:10','%m-%d-%Y %H:%i'));
Query OK, 1 row affected (0.17 sec)주요 포맷 지정자 의미
- %m : 월(Month, 00~12)
- %d : 일(Day, 00~31)
- %Y : 연도(4자리)
- %H : 시(Hour, 00~23)
- %i : 분(Minute, 00~59)
3. 결과 확인하기
SELECT 문을 사용하여 테이블에 저장된 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다. 미국식 날짜가 MySQL 표준 형식(YYYY-MM-DD HH:MM:SS)으로 정상적으로 변환된 것을 확인할 수 있습니다.
+----+---------------------+ | Id | ShippingDatetime | +----+---------------------+ | 1 | 2012-01-31 01:23:00 | | 2 | 2018-12-01 04:56:00 | | 3 | 2019-04-17 10:10:00 | +----+---------------------+ 3 rows in set (0.00 sec)
정리
STR_TO_DATE() 함수는 날짜 형식이 서로 다른 외부 데이터를 MySQL에 삽입할 때 매우 유용합니다. 입력 문자열의 실제 형식에 맞게 포맷 지정자만 정확히 작성해 주면, 별도의 전처리 없이 INSERT 단계에서 즉시 변환이 가능합니다.