2011-11-04 5 views
0

오라클의 초보자이며 Oracle DATE 유형의 작동 방식을 이해하려고 노력 중입니다.오라클 날짜 비교 및 ​​시간대

시간대 정보가있는 Java Date 객체가 있습니다. 내가 이해 한 바에 따르면 Java Date 객체는 1970 년 1 월 1 일 이후로 밀리 초로 정규화됩니다.이 Date 객체는 JDBC API를 통해 데이터베이스에 저장됩니다. 준비된 구문은 다음과 같습니다.

ps.setTimestamp (index, new java.sql.Timestamp.Timestamp (date.getTime()));

날짜 및 시간 정보를 캡처하기 위해 수행됩니다.

이 인덱스에 해당하는 데이터베이스 열은 date DATE 유형입니다. 이 java.sql.Timestamp.Timestamp 객체 값을 Oracle DATE 필드에 저장하면 정규화 된 날짜 (1970 년 1 월 1 일 이후의 밀리 초 수)가 저장됩니까? 따라서 데이터베이스가 어느 시간대에 있더라도 oracle DATE 열에 저장된 데이터는 동일한 정규화 된 데이터가 될 것입니다. 맞습니까?

where 절에있는이 DATE 열을 SYSDATE와 비교하면 비교가 완료 될 때 SYSDATE도 정규화됩니다. 오라클 서버가 다른 시간대에있을 수 있기 때문에 비교가 오라클에서 어떻게 수행되는지는 잘 모르겠습니다.

미리 감사드립니다.

+0

DATE 유형은 날짜의 시간 부분을 두 번째 세부 사항까지 저장합니다. 자세한 내용이 필요하면 TIMESTAMP 유형을 고려해야합니다 (http://www.databasejournal.com/features/oracle/article.php). /2234501/A-Comparison-of-Oracles-DATE- 및 -TIMESTAMP-Datatypes.htm). DATE 유형의 시간대 지원에 대한 전체 내용은 http://download.oracle.com/docs/cd/B19306_01/server.102/b14225/ch4datetime.htm을 참조하십시오. – Ollie

답변

0

DATE 값은 모두 정상화됩니다.

나는 자이 썬과 간단한 오라클 쿼리를 만들었을 때 :

rs = c.executeQuery("select sysdate from dual") 
while (rs.next()): 
    print('%s' % (SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z").format(rs.getTimestamp(1)))) 

내가 가지고 :

2011-11-04 09:58:00 +0100 

을 그리고 폴란드에 사는 동안 우리는 '0100'시간대가 있습니다.