MySQL에서 문자열 형태의 날짜 데이터를 실제 DATE 타입으로 변환하려면 STR_TO_DATE() 함수를 사용하면 됩니다. 이 함수는 지정된 형식에 맞춰 문자열을 해석하고, 이를 날짜 값으로 반환해 줍니다.
STR_TO_DATE() 기본 문법
STR_TO_DATE() 함수의 기본적인 사용 문법은 다음과 같습니다.
SELECT str_to_date(yourColumnName, 'format') AS anyVariableName FROM yourTableName;
위 문법에서 'format' 자리에는 '%d-%b-%y'와 같은 형식 지정자가 들어갑니다. 각 지정자의 의미는 다음과 같습니다.
- %d : 일(day), 두 자리 숫자
- %b : 축약된 월 이름 (예: Nov, Dec)
- %y : 두 자리 연도
실습용 테이블 생성하기
함수의 동작을 이해하기 위해 먼저 테이블을 생성해 보겠습니다. 아래는 테이블 생성 쿼리입니다.
mysql> create table ParseDateDemo -> ( -> yourDate varchar(200) -> ); Query OK, 0 rows affected (0.55 sec)
샘플 데이터 삽입
이제 INSERT 문을 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into ParseDateDemo values('10-Nov-18');
Query OK, 1 row affected (0.11 sec)
mysql> insert into ParseDateDemo values('15-Nov-18');
Query OK, 1 row affected (0.17 sec)
mysql> insert into ParseDateDemo values('10-Dec-18');
Query OK, 1 row affected (0.14 sec)
mysql> insert into ParseDateDemo values('10-Aug-17');
Query OK, 1 row affected (0.14 sec)저장된 데이터 확인
SELECT 문으로 테이블에 저장된 레코드를 조회해 보겠습니다.
mysql> select *from ParseDateDemo;
실행 결과는 다음과 같습니다.
+-----------+ | yourDate | +-----------+ | 10-Nov-18 | | 15-Nov-18 | | 10-Dec-18 | | 10-Aug-17 | +-----------+ 4 rows in set (0.00 sec)
STR_TO_DATE()로 날짜 파싱하기
이제 MySQL에서 날짜를 파싱하는 실제 쿼리를 살펴보겠습니다.
mysql> select str_to_date(yourDate,'%d-%b-%y') as DateNumber from ParseDateDemo;
위 쿼리를 실행하면 '10-Nov-18'처럼 저장되어 있던 문자열이 표준 날짜 형식인 '2018-11-10'으로 변환됩니다. 실행 결과는 다음과 같습니다.
+------------+ | DateNumber | +------------+ | 2018-11-10 | | 2018-11-15 | | 2018-12-10 | | 2017-08-10 | +------------+ 4 rows in set (0.02 sec)
이처럼 STR_TO_DATE() 함수를 활용하면 VARCHAR 타입으로 저장된 다양한 형식의 날짜 문자열을 손쉽게 DATE 타입으로 변환할 수 있습니다. 참고로 반대로 날짜를 특정 형식의 문자열로 바꾸고 싶다면 DATE_FORMAT() 함수를 사용하면 되며, 두 함수는 서로 짝을 이루어 자주 함께 활용됩니다.