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;
사실은 컬럼의 형을 바꾸는 것은 아니고
컬럼을 새로 추가 하고 날짜 형식으로 복사하는 것이다.
'DataBase' 카테고리의 다른 글
[Oracle] 현재월의 마지막 ?요일의 날짜 구하기 (0) | 2016.10.23 |
---|---|
[Oracle] 다른 버전의 오라클 import, export 하기 (0) | 2014.08.27 |
[Oracle] 오라클 인스턴스 클라이언트(oracle instant client) (0) | 2012.05.31 |
[Oracle] 스키마 조회 쿼리 모음 (0) | 2011.09.26 |
[MySQl] 백업 및 복구 (0) | 2011.03.03 |