반응형
Oracle jdbc에서 문 준비 및 타임스탬프 설정
Prepared Statement with Timestamp(타임스탬프 포함)를 사용하고 있습니다. 여기서 절:
PreparedStatement s=c.prepareStatement("select value,utctimestamp from t where utctimestamp>=? and utctimestamp<?");
s.setTimestamp(1, new Timestamp(1273017600000L)); //2010-05-05 00:00 GMT
s.setTimestamp(2, new Timestamp(1273104000000L)); //2010-05-06 00:00 GMT
ResultSet rs = s.executeQuery();
if(rs.next()) System.out.println(rs.getInt("value"));
클라이언트 컴퓨터의 표준 시간대가 다를 경우 결과가 다릅니다.이것은 Oracle jdbc의 버그입니까?아니면 올바른 행동?
Oracle 데이터베이스 버전은 10.2이며 Oracle jdbc Thin driver 버전 10.2 및 11.1을 사용해 보았습니다.
매개 변수는 타임스탬프이며, 도중에 시간 변환이 수행되지 않을 것으로 예상했습니다.데이터베이스 열 유형은 DATE이지만, 결과가 동일한 TIMESTAMP 열 유형으로도 확인했습니다.
올바른 결과를 얻을 수 있는 방법이 있습니까?전체 애플리케이션의 기본 표준 시간대를 UTC로 변경할 수 없습니다.
도와주셔서 고마워요.
UTC 표준 시간대에서 준비된 문에 타임스탬프 값을 설정하려면 다음과 같이 하십시오.
stmt.setTimestamp(1, t, Calendar.getInstance(TimeZone.getTimeZone("UTC")))
타임스탬프 값은 항상 UTC이지만 jdbc 드라이버가 자동으로 타임스탬프 값을 서버로 올바르게 전송할 수 있는 것은 아닙니다.세 번째인 일정관리 매개변수는 드라이버가 서버에 대한 값을 올바르게 준비하는 데 도움이 됩니다.
언급URL : https://stackoverflow.com/questions/2858182/preparedstatement-and-settimestamp-in-oracle-jdbc
반응형
'bestsource' 카테고리의 다른 글
Java의 여러 데이터 소스(오라클, Excel, SQL 서버)에 액세스하기 위한 단일 SQL 쿼리 (0) | 2023.07.03 |
---|---|
엔티티에 기본 키가 없는 보기 사용 (0) | 2023.07.03 |
문자열 벡터에서 숫자 추출 (0) | 2023.06.28 |
쿼츠 스케줄러의 각 테이블은 무엇을 의미합니까? (0) | 2023.06.28 |
실행 중인 스크립트의 경로 결정 (0) | 2023.06.28 |