제로보드 reg_date 필드 date 형으로 변환하기

by 조쉬 posted Sep 12, 2016
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

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;

 

사실은 컬럼의 형을 바꾸는 것은 아니고

컬럼을 새로 추가 하고 날짜 형식으로 복사하는 것이다.