MySQL에서 YYYYMMDD 날짜를 YY-MM-DD 형식으로 변환하는 방법
MySQL에서 YYYYMMDD 형태로 저장된 날짜 문자열을 하이픈이 포함된 날짜 형식으로 변환하려면 STR_TO_DATE()와 DATE_FORMAT() 함수를 조합하여 사용하면 됩니다.
기본 문법은 다음과 같습니다.
select date_format(str_to_date(yourColumnName, '%Y%m%d'),'%Y-%m-%d') from yourTableName;
여기서 STR_TO_DATE()는 '20121221'처럼 저장된 문자열을 %Y%m%d 포맷 기준으로 해석해 날짜(DATE) 값으로 변환하고, DATE_FORMAT()은 그 날짜를 원하는 출력 형식으로 다시 포맷팅하는 역할을 합니다.
참고로 %Y-%m-%d는 연도를 네 자리(예: 2012-12-21)로 출력합니다. 만약 두 자리 연도(예: 12-12-21) 형식이 필요하다면 포맷 문자열을 %y-%m-%d로 바꾸면 됩니다.
1단계: 테이블 생성
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
(
ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientProjectDeadline varchar(200)
);
Query OK, 0 rows affected (0.57 sec)
ClientProjectDeadline 컬럼은 varchar 타입으로, 날짜가 YYYYMMDD 형태의 문자열로 저장됩니다.
2단계: 데이터 삽입
INSERT 명령어를 사용해 YYYYMMDD 형식의 날짜 데이터를 입력합니다.
mysql> insert into DemoTable(ClientProjectDeadline) values('20121221');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable(ClientProjectDeadline) values('20190416');
Query OK, 1 row affected (0.53 sec)
mysql> insert into DemoTable(ClientProjectDeadline) values('20160624');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable(ClientProjectDeadline) values('20170131');
Query OK, 1 row affected (0.20 sec)
3단계: 저장된 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----------+-----------------------+ | ClientId | ClientProjectDeadline | +----------+-----------------------+ | 1 | 20121221 | | 2 | 20190416 | | 3 | 20160624 | | 4 | 20170131 | +----------+-----------------------+ 4 rows in set (0.00 sec)
4단계: 날짜 형식 변환 쿼리 실행
이제 YYYYMMDD 형식의 날짜를 YYYY-MM-DD 형식으로 변환하는 쿼리입니다.
mysql> select date_format(str_to_date(ClientProjectDeadline, '%Y%m%d'),'%Y-%m-%d') from DemoTable;
실행 결과는 다음과 같습니다.
+----------------------------------------------------------------------+ | date_format(str_to_date(ClientProjectDeadline, '%Y%m%d'),'%Y-%m-%d') | +----------------------------------------------------------------------+ | 2012-12-21 | | 2019-04-16 | | 2016-06-24 | | 2017-01-31 | +----------------------------------------------------------------------+ 4 rows in set (0.05 sec)
마무리
이처럼 MySQL에서는 STR_TO_DATE()로 문자열을 날짜 값으로 변환한 뒤 DATE_FORMAT()으로 원하는 형식으로 출력하는 방식으로 날짜 포맷을 손쉽게 변경할 수 있습니다. 두 자리 연도 형식(YY-MM-DD)이 필요하다면 포맷 문자열만 '%y-%m-%d'로 바꿔주면 됩니다.