> Java > java지도 시간 > JDBC에서 java.sql.Timestamp를 사용할 때 시간대를 적절하게 처리하려면 어떻게 해야 합니까?

JDBC에서 java.sql.Timestamp를 사용할 때 시간대를 적절하게 처리하려면 어떻게 해야 합니까?

Barbara Streisand
풀어 주다: 2024-12-15 20:48:17
원래의
947명이 탐색했습니다.

How Can I Properly Handle Time Zones When Using java.sql.Timestamp with JDBC?

java.sql.Timestamp에 대한 시간대 고려 사항 이해

데이터베이스에서 타임스탬프를 저장하고 검색하기 위해 java.sql.Timestamp를 활용할 때 다음 사항을 고려하는 것이 중요합니다. 시간대가 데이터에 미치는 영향.

시간대 처리 JDBC

기본적으로 Calendar 객체를 지정하지 않고 setTimestamp(int, Timestamp)를 사용하여 Timestamp 객체를 설정하면 JDBC 드라이버는 애플리케이션을 실행하는 가상 머신의 시간대를 활용합니다. 이는 데이터베이스에 저장된 타임스탬프가 의도한 시간대를 반영하지 않을 수 있음을 의미합니다.

UTC 타임스탬프 저장

UTC 타임스탬프가 데이터베이스에 올바르게 저장되도록 하려면 Calendar 개체를 제공해야 합니다. 원하는 시간대로 setTimestamp(int, Timestamp, Calendar)를 설정합니다. UTC의 경우 다음과 같이 달성할 수 있습니다.

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
stmt.setTimestamp(11, tsSchedStartTime, cal);
로그인 후 복사

출력에 미치는 영향

시간대 고려 사항을 무시하여 제공된 코드는 UTC 타임스탬프를 로컬 타임스탬프로 잘못 저장합니다. 현재 애플리케이션의 시간대를 기준으로 해석되므로 데이터베이스에서 데이터를 검색할 때 불일치가 발생할 수 있습니다.

Timestamp.toString()에 대한 현지 시간대의 영향

java.util.Date와 유사한 Timestamp.toString() 메서드는 가상 머신의 현지 시간대를 기반으로 타임스탬프를 인쇄합니다. 저장된 값의 시간대를 반영하지 않습니다.

JDBC 4.2 솔루션

JDBC 4.2에서는 TIMESTAMP 및 TIME 데이터 유형에 대한 java.time.LocalDateTime 및 java.time.LocalTime 지원이 도입되었습니다. . 이러한 클래스는 시간대에 구애받지 않으므로 명시적인 시간대 변환이 필요하지 않습니다.

위 내용은 JDBC에서 java.sql.Timestamp를 사용할 때 시간대를 적절하게 처리하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿