MySQL 기반의 제로보드 게시판을 오라클로 옮길때 몇가지 문제점 중 하나.
게시물 등록일자인 reg_date 필드가 속성이 int(13) 형으로 실제 데이터를 보면
1294018642이처럼 들어간다.
이 숫자는 UNIX 시스템 타임인데
1970년 1월 1일을 기준으로 누적된 초이다.
오라클로 변환할 경우 그냥 number 타입 같은거로 써도 되지만
date 형으로 변환할 방법을 궁리 해 봤다.
우선 유닉스 시간을 오라클 형으로 바꾸는 법은
select to_char(to_date('19700101000000','YYYYMMDDHH24MISS') + 1362965195 / 86400 , 'yyyy-mm-dd hh24:mi:ss') as oracle_time from dual;
이것을 참고 하여 reg_date number 형을 reg_date date 형으로 바꿔 보자
변경할 reg_date 컬럼이 있는 테이블 명이 member_table 이라고 하고
alter table member_table add reg_date2 date null;
update member_table set reg_date2 = to_date('19700101000000','YYYYMMDDHH24MISS') + reg_date/86400;
commit;
alter table member_table drop column reg_date;
alter table member_table add reg_date date null;
update member_table set reg_date = reg_date2;
commit;
alter table member_table modify reg_date not null;
alter table member_table drop column reg_date2;
select * from member_table;
사실은 컬럼의 형을 바꾸는 것은 아니고
컬럼을 새로 추가 하고 날짜 형식으로 복사하는 것이다.