MySQL에서 VARCHAR 타입으로 저장된 날짜 데이터를 실제 DATE 형식으로 변환하려면 STR_TO_DATE() 함수를 사용하면 됩니다. 이 함수는 문자열과 형식 지정자를 인자로 받아 해당 문자열을 MySQL이 인식할 수 있는 날짜 값으로 변환해 줍니다.
1. 테스트 테이블 생성
먼저 날짜 문자열을 저장할 VARCHAR 컬럼을 가진 테이블을 생성합니다.
mysql> create table DemoTable1989
(
DueDate varchar(20)
);
Query OK, 0 rows affected (0.91 sec)2. 샘플 데이터 삽입
INSERT 명령을 사용하여 '일/월/년' 형식의 날짜 문자열을 몇 개 입력합니다.
mysql> insert into DemoTable1989 values('31/01/2015');
Query OK, 1 row affected (0.52 sec)
mysql> insert into DemoTable1989 values('01/12/2018');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable1989 values('25/10/2019');
Query OK, 1 row affected (0.11 sec)3. 저장된 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select * from DemoTable1989;
위 쿼리는 다음과 같은 결과를 출력합니다.
+------------+ | DueDate | +------------+ | 31/01/2015 | | 01/12/2018 | | 25/10/2019 | +------------+ 3 rows in set (0.00 sec)
4. STR_TO_DATE()로 날짜 형식 변환
이제 STR_TO_DATE() 함수를 사용하여 VARCHAR 데이터를 MySQL 날짜 형식으로 변환합니다. 입력된 문자열이 '일/월/년' 순서이므로 형식 지정자로 '%d/%m/%Y'를 지정합니다.
mysql> select str_to_date(DueDate,'%d/%m/%Y') as MySQLDateFormat from DemoTable1989;
실행 결과는 다음과 같습니다.
+-----------------+ | MySQLDateFormat | +-----------------+ | 2015-01-31 | | 2018-12-01 | | 2019-10-25 | +-----------------+ 3 rows in set (0.05 sec)
주요 형식 지정자 정리
- %d : 일(Day), 두 자리 숫자 (예: 01~31)
- %m : 월(Month), 두 자리 숫자 (예: 01~12)
- %Y : 연도(Year), 네 자리 숫자 (예: 2024)
참고로, 변환된 결과를 영구적으로 저장하고 싶다면 ALTER TABLE로 새로운 DATE 타입 컬럼을 추가한 뒤 UPDATE 문과 함께 STR_TO_DATE()를 사용하여 기존 데이터를 갱신하는 방법도 활용할 수 있습니다.