MySQL에서 날짜 형식을 변환하는 방법
MySQL에서 문자열(VARCHAR)로 저장된 날짜 데이터를 표준 DATETIME 형식으로 변환하려면 STR_TO_DATE() 함수를 사용하면 됩니다. 이 함수는 지정한 형식 문자열에 따라 텍스트 형태의 날짜를 해석하여 실제 날짜·시간 값으로 반환합니다.
1. 예제 테이블 생성하기
먼저 날짜를 문자열로 저장하는 테이블을 생성합니다.
mysql> create table DemoTable2010
(
DueDate varchar(20)
);
Query OK, 0 rows affected (0.68 sec)
2. 샘플 데이터 삽입하기
INSERT 명령을 사용해 다양한 형식의 날짜 문자열을 입력합니다.
mysql> insert into DemoTable2010 values('12/10/2019 12:34:00');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable2010 values('12/12/2011 11:00:20');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable2010 values('31/01/2017 11:00:20');
Query OK, 1 row affected (0.23 sec)3. 저장된 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select * from DemoTable2010;
실행 결과는 다음과 같습니다.
+---------------------+
| DueDate |
+---------------------+
| 12/10/2019 12:34:00 |
| 12/12/2011 11:00:20 |
| 31/01/2017 11:00:20 |
+---------------------+
3 rows in set (0.00 sec)
4. STR_TO_DATE()로 날짜 형식 변환하기
아래 쿼리는 '일/월/년 시:분' 형식으로 저장된 문자열을 표준 DATETIME 형식으로 변환합니다.
mysql> select str_to_date(DueDate,'%d/%m/%Y %k:%i') from DemoTable2010;
실행 결과는 다음과 같습니다.
+---------------------------------------+
| str_to_date(DueDate,'%d/%m/%Y %k:%i') |
+---------------------------------------+
| 2019-10-12 12:34:00 |
| 2011-12-12 11:00:00 |
| 2017-01-31 11:00:00 |
+---------------------------------------+
3 rows in set, 3 warnings (0.00 sec)
주요 형식 지정자 정리
STR_TO_DATE()에서 자주 사용되는 형식 지정자는 다음과 같습니다.
- %d — 일(01~31)
- %m — 월(01~12)
- %Y — 4자리 연도(예: 2019)
- %k — 24시간제 시간(0~23)
- %i — 분(00~59)
이처럼 저장된 문자열의 실제 순서에 맞게 형식 지정자를 조합하면, 어떤 형태의 날짜 문자열이든 손쉽게 표준 DATETIME 값으로 변환할 수 있습니다. 참고로 초 단위가 없는 입력값에 대해 경고(warnings)가 발생할 수 있지만, 결과에는 영향을 주지 않습니다.