본문 바로가기
IT 이야기/데이터베이스

[Oracle] JAVA Long 데이터로 DB에 저장된 시간 변환 방법

by youngmap 2022. 6. 13.
반응형

시간 데이터가 자바 Long 타입으로 DB에 저장된 경우가 있다.

 

java 소스는 아래와 같다.

long time = System.currentTimeMillis();
System.out,println(time);

결과는 1654747668205 이렇게 숫자로 출력된다.

 

그렇다면 해당 값을 실제 시간으로 출력하려면 어떻게 해야 할까?

java에서 시간 값은 1970년 1월 1일 0시 0분 0초를 기준으로 1초마다 1000으로 계산하여 증가하는 형태를 갖는다.

 

여기에서 힌트를 얻어 다음과 같이 SQL을 짜면 시간 값을 얻을 수 있다.

쿼리는 다음과 같다.

 

SELECT 1654747668205 as "JAVA_TIME"
       , TO_CHAR(TO_TIMESTAMP('19700101', 'YYYYMMDD') + NUMTODSINTERVAL(1654747668205 / 1000, 'SECOND'), 'YYYY-MM-dd HH24:mi:ss') as "TO_TIME"
       , TO_CHAR(TO_TIMESTAMP('19700101', 'YYYYMMDD') + NUMTODSINTERVAL(1654747668205 / 1000, 'SECOND') + 9/24, 'YYYY-MM-dd HH24:mi:ss') as "TO_TIME+9"
FROM DUAL;
JAVA_TIME TO_TIME TO_TIME+9
1654747668205  2022-06-09 04:07:48 2022-06-09 13:07:48

 

그리니치 표준시(GMT) +9까지 반영하면 한국시간으로 완벽히 변환된다.

데이터베이스 시간 컬럼에 이상한 숫자가 들어가 있다면 당황하지 말고 시간 데이터로 변환해보자.

 

오라클 DB에서 JAVA Long 시간 데이터를 변환하는 방법을 설명했다.

반응형