아래와 같이 원본 데이터의 날짜 형식이 섞여있을 때 데이터를 처리하는 방법입니다.
아래에 데이터 생성부터 변환 코드 남깁니다.
혹시 궁금하신 내용은 댓글 남겨주세요.
감사합니다.
-- 데이터 형식이 섞여있는 샘플데이터 생성
-- 임시테이블 (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
[Oracle] 연속으로 된 날짜 만들기 (CONNECT BY LEVEL 활용) (1) | 2021.03.31 |
---|---|
[Oracle] 오라클 VARCHAR2 타입 Byte semantics과 Character Semantics (0) | 2021.03.09 |
[Virtualbox] 버추얼박스에 설치한 MySQL 접속하기 (3) | 2021.02.12 |
[리소스 확장의 2가지 방법] 스케일업(Scale up) 스케일아웃(Scale out) (0) | 2021.02.01 |
[MySQL] group_concat 사용방법 (2) | 2020.06.10 |