MySQL에서 STR_TO_DATE() 함수를 사용하면 'DD/MM/YYYY'처럼 문자열로 저장된 날짜를 실제 DATE 타입으로 손쉽게 변환할 수 있습니다. 날짜 연산이나 정렬, 비교가 필요한 경우 반드시 DATE 타입으로 변환해야 하므로 매우 유용한 함수입니다.
STR_TO_DATE() 기본 문법
SELECT STR_TO_DATE(yourColumnName, '%d/%m/%Y') AS anyVariableName FROM yourTableName;
여기서 사용된 형식 지정자의 의미는 다음과 같습니다.
- %d : 일(01~31)
- %m : 월(01~12)
- %Y : 4자리 연도(예: 2018)
예제 테이블 생성
먼저 문법을 이해하기 위해 간단한 테이블을 만들어 보겠습니다.
mysql> create table DateFormatDemo
-> (
-> IssueDate varchar(100)
-> );
Query OK, 0 rows affected (0.54 sec)문자열 형태의 날짜 데이터 입력
테이블에 'DD/MM/YYYY' 형식의 문자열 날짜를 삽입합니다.
mysql> insert into DateFormatDemo values('26/11/2018');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DateFormatDemo values('27/11/2018');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DateFormatDemo values('2/12/2018');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DateFormatDemo values('3/12/2018');
Query OK, 1 row affected (0.14 sec)저장된 데이터 확인
입력된 모든 날짜를 조회해 보겠습니다.
mysql> select *from DateFormatDemo;
실행 결과는 다음과 같습니다.
+------------+ | IssueDate | +------------+ | 26/11/2018 | | 27/11/2018 | | 2/12/2018 | | 3/12/2018 | +------------+ 4 rows in set (0.00 sec)
STR_TO_DATE()로 문자열을 날짜로 변환
이제 앞서 소개한 문법을 적용해 문자열을 DATE 형식으로 변환합니다.
mysql> select STR_TO_DATE(IssueDate, '%d/%m/%Y') StringToDateFormatExample from DateFormatDemo;
실행 결과는 다음과 같습니다.
+---------------------------+ | StringToDateFormatExample | +---------------------------+ | 2018-11-26 | | 2018-11-27 | | 2018-12-02 | | 2018-12-03 | +---------------------------+ 4 rows in set (0.00 sec)
참고: 반대로 DATE를 원하는 형식으로 출력하려면?
DATE 타입의 값을 'DD/MM/YYYY' 형식의 문자열로 표시하고 싶다면 DATE_FORMAT() 함수를 사용하면 됩니다.
SELECT DATE_FORMAT(NOW(), '%d/%m/%Y');
정리하면, STR_TO_DATE()는 문자열 → 날짜 변환에, DATE_FORMAT()은 날짜 → 문자열 변환에 사용됩니다. 두 함수를 함께 활용하면 다양한 날짜 형식 요구 사항을 손쉽게 처리할 수 있습니다.