행궁동 데이터 엔지니어

반응형

아래와 같이 원본 데이터의 날짜 형식이 섞여있을 때 데이터를 처리하는 방법입니다.

 

년-월-일로 데이터 통일

아래에 데이터 생성부터 변환 코드 남깁니다.

 

혹시 궁금하신 내용은 댓글 남겨주세요.

 

감사합니다.

 

주요 사용 함수

  • 조건 문 : case when
  • str_to_date(문자열, 'date format') : 문자열을 원하는 날짜 형식(date format, ex. %Y-%m-%d)으로 변환
  • 이외 임시 테이블 생성(create temporary table), Insert, Update 구문

 

날짜 형식이 섞여있는 테스트용 임시 테이블 생성

-- 데이터 형식이 섞여있는 샘플데이터 생성

-- 임시테이블 (cte) 생성
create temporary table cte(
str_val varchar(20)
);

-- 데이터 Insert
insert into cte values ('01/01/2019 00:00:00'), ('2019-01-01 00:00'), ('2019-01-02');

-- 데이터 조회
select * from cte;

변환

-- 변경한 DATE 저장할 컬럼(con_date) 추가
alter table `cte` add column `con_date` date after `str_val`;

-- con_date 컬럼 update
-- case when으로 '/' 문자를 포함한 경우와 아닌 경우 2가지 경우별로 데이터 변환
update cte
set con_date = 
    CASE
        WHEN str_val REGEXP '/' THEN STR_TO_DATE(str_val, '%m/%d/%Y')
        ELSE STR_TO_DATE(str_val, '%Y-%m-%d')
    END;

-- 확인 
select * from cte;

최종 변환 결과

 

최종 변환 결과

 

 

참고자료

1. 확장형 뇌 저장소님 블로그, MySQL CASE 기본 사용법, https://extbrain.tistory.com/46
2. 개발자가 되기 위한 첫걸음 님 블로그, MySQL 컬럼명 변경, 추가, 삭제, https://juyoung-1008.tistory.com/17
3. TCP 스쿨, UPDATE, http://www.tcpschool.com/mysql/mysql_basic_update
반응형

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band