데이터베이스에서 타임스탬프를 저장하고 검색하기 위해 java.sql.Timestamp를 활용할 때 다음 사항을 고려하는 것이 중요합니다. 시간대가 데이터에 미치는 영향.
기본적으로 Calendar 객체를 지정하지 않고 setTimestamp(int, Timestamp)를 사용하여 Timestamp 객체를 설정하면 JDBC 드라이버는 애플리케이션을 실행하는 가상 머신의 시간대를 활용합니다. 이는 데이터베이스에 저장된 타임스탬프가 의도한 시간대를 반영하지 않을 수 있음을 의미합니다.
UTC 타임스탬프가 데이터베이스에 올바르게 저장되도록 하려면 Calendar 개체를 제공해야 합니다. 원하는 시간대로 setTimestamp(int, Timestamp, Calendar)를 설정합니다. UTC의 경우 다음과 같이 달성할 수 있습니다.
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); stmt.setTimestamp(11, tsSchedStartTime, cal);
시간대 고려 사항을 무시하여 제공된 코드는 UTC 타임스탬프를 로컬 타임스탬프로 잘못 저장합니다. 현재 애플리케이션의 시간대를 기준으로 해석되므로 데이터베이스에서 데이터를 검색할 때 불일치가 발생할 수 있습니다.
java.util.Date와 유사한 Timestamp.toString() 메서드는 가상 머신의 현지 시간대를 기반으로 타임스탬프를 인쇄합니다. 저장된 값의 시간대를 반영하지 않습니다.
JDBC 4.2에서는 TIMESTAMP 및 TIME 데이터 유형에 대한 java.time.LocalDateTime 및 java.time.LocalTime 지원이 도입되었습니다. . 이러한 클래스는 시간대에 구애받지 않으므로 명시적인 시간대 변환이 필요하지 않습니다.
위 내용은 JDBC에서 java.sql.Timestamp를 사용할 때 시간대를 적절하게 처리하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!