MySQL에서는 문자열로 저장된 날짜 데이터를 STR_TO_DATE() 함수로 파싱한 뒤, DATE_FORMAT() 함수를 사용해 원하는 형식으로 손쉽게 변환할 수 있습니다. 이 글에서는 'August 04,2019'처럼 텍스트로 저장된 날짜 값을 '2019-08-04' 형식의 표준 날짜로 바꾸는 과정을 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 날짜 문자열을 저장할 테이블을 생성합니다.
mysql> create table DemoTable
(
DueDate varchar(100)
);
Query OK, 0 rows affected (0.62 sec)DemoTable에는 DueDate라는 varchar(100) 타입의 컬럼 하나가 정의되어 있습니다.
2. 샘플 데이터 삽입하기
INSERT 명령어를 사용해 날짜 형식의 문자열 데이터를 입력합니다.
mysql> insert into DemoTable values('August 04,2019');
Query OK, 1 row affected (0.25 sec)3. 저장된 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----------------+ | DueDate | +----------------+ | August 04,2019 | +----------------+ 1 row in set (0.00 sec)
4. STR_TO_DATE()와 DATE_FORMAT()으로 날짜 형식 변환
이제 핵심 쿼리입니다. STR_TO_DATE()는 '%M %d,%Y' 포맷 지정자를 사용해 'August 04,2019' 문자열을 날짜 값으로 해석하고, 이어서 DATE_FORMAT()이 그 결과를 '%Y-%m-%d' 형식, 즉 'YYYY-MM-DD' 형태로 변환합니다.
mysql> set @stringToDate=(select date_format(str_to_date(DueDate, '%M %d,%Y'), '%Y-%m-%d') from DemoTable); Query OK, 0 rows affected (0.02 sec)
변환된 결과를 사용자 변수 @stringToDate에 담았습니다.
5. 변환 결과 확인하기
SELECT 문으로 변수에 저장된 날짜를 출력합니다.
mysql> select @stringToDate;
실행 결과는 다음과 같습니다.
+---------------+ | @stringToDate | +---------------+ | 2019-08-04 | +---------------+ 1 row in set (0.00 sec)
주요 포맷 지정자 정리
- %M: 월 이름 전체 (예: August)
- %d: 일(날짜), 두 자리 숫자 (예: 04)
- %Y: 네 자리 연도 (예: 2019)
- %m: 두 자리 숫자 월 (예: 08)
이처럼 STR_TO_DATE()와 DATE_FORMAT()을 조합하면 다양한 형식의 날짜 문자열을 원하는 표준 형식으로 자유롭게 변환할 수 있으며, DATE 또는 DATETIME 타입 컬럼에 데이터를 정리할 때 특히 유용합니다.