2012-09-11 2 views
0

Oracle DB에 DATE 유형의 열이 있습니다. 06.09.12는 거기에 저장된 값 중 하나입니다. 또한 java.util.Date 형식의 멤버 필드 "date"가있는 테이블에 매핑 된 EJB 엔터티가 있습니다. 그러나 getter 메소드는 테이블에 저장된 날짜와 하루 더한 날짜를 리턴합니다. 지. 06.09.12 대신 07.09.12. 저장된 날짜를 정확히 얻으려면 어떻게해야합니까? 타임 스탬프 사용을 고려해야합니까?Oracle 날짜 및 EJB 날짜

+0

어떻게 당신이 DB에서 날짜를 불러 오는됩니다

select dbtimezone,sessiontimezone from dual; 

그리고 자바

? –

+1

DB의 날짜가 시간대를 모방합니까? (NLS_DATE_FORMAT 값은 무엇입니까?). Java 코드를 실행하는 시스템의 사용자 시간대 값은 무엇입니까? – aviad

+0

감사합니다. 문제가 다른 시간대와 연결되었습니다. – gisly

답변

2

DB의 시간대가 Java에서 설정된 시간대와 다릅니다. 시간대가 다를 수 있습니다. 기본 시간은 실제로 동일하지만 예를 들어 DB의 날짜는 GMT로, Java는 동부 표준시로 해석됩니다. GMT 자정 이후, GMT는 하루 전인 7 시간 정도입니다.

이 두 시간대는 기본적으로 서버의 시간대이지만, DB 설치 및 Java VM에 의해 무시 될 수 있습니다. 이 오라클, 경우에 해당

는 테스트하려면 :

TimeZone tz = Calendar.getInstance().getTimeZone(); 
System.out.println("TimeZone: "+tz.getDisplayName());