본문 바로가기
반응형

IT 이야기/데이터베이스2

[Oracle] JAVA Long 데이터로 DB에 저장된 시간 변환 방법 시간 데이터가 자바 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') + .. 2022. 6. 13.
갑자기 쿼리가 동작하지 않을 때 확인사항 : DB 묵시적 형변환 어느 날 갑자기 운영시스템(운영DB - Oracle)에서 잘 돌아가는 쿼리가 동일한 환경의 개발시스템(개발DB)에서 돌아가지 않는 현상이 발견되었다. 쿼리를 요약하자면 아래와 같은 단순한 조회 쿼리고 ID 컬럼의 데이터형은 VARCHAR2 였다. SELECT * FROM A WHERE ID = 1234 일단 문자형 칼럼을 숫자로 조회한다는 건 잘못된 것이 분명하다. 하지만 그동안 시스템에서 잘 돌아가던 쿼리가 갑자기 안 돌아가는 현상은 무엇 때문일까? 그 이유는 묵시적(암시적) 형변환 때문이다. 문자열 칼럼을 숫자로 조회하면 해당 칼럼의 데이터들을 숫자로 묵시적 형 변환 후 비교하게 된다. ID 칼럼에는 그동안 모두 숫자로 변환 가능한 데이터만을 취급했는데 갑자기 문자 데이터가 들어오게 된 것이다. 그 .. 2021. 12. 28.
반응형