집 >데이터 베이스 >MySQL 튜토리얼 >Java를 MySQL 데이터베이스에 연결할 때 시간대를 올바르게 처리하려면 어떻게 해야 합니까?
MySQL은 "GMT 8" 시간대로 작동하는 반면 Tomcat은 "GMT"를 사용합니다. datetime을 데이터베이스에 저장하면 값이 올바른 것처럼 보일 수 있지만 검색하면 "GMT" 값이 나타납니다. 또한 데이터베이스에서 검색된 값은 "GMT"로 변환됩니다. 이는 데이터베이스가 이를 "GMT 8"로 간주함을 의미합니다.
useTimezone 매개변수는 오래된 해결 방법입니다. 최신 솔루션의 경우 useLegacyDatetimeCode=false를 설정하고 최신 mysql JDBC 커넥터로 업그레이드하세요. 연결 URL 예시:
jdbc:mysql://localhost/mydb?useLegacyDatetimeCode=false
useLegacyDatetimeCode가 false로 설정된 경우 newSetTimestampInternal() 메서드가 호출됩니다. 제공된 Calendar가 null인 경우 날짜 개체는 데이터베이스의 시간대에 따라 형식이 지정됩니다.
this.tsdf = new SimpleDateFormat("''yyyy-MM-dd HH:mm:ss", Locale.US); this.tsdf.setTimeZone(this.connection.getServerTimezoneTZ()); timestampString = this.tsdf.format(x);
날짜를 검색하려면 Calendar 없이 getTimestamp(int)를 사용하세요. 다시 말하지만, 데이터베이스 시간대는 날짜를 구성하는 데 사용됩니다.
이제 웹 서버의 시간대는 형식 지정과 관련이 없습니다. useLegacyDatetimecode가 true로 유지되면 웹 서버의 시간대가 사용되어 혼란을 야기합니다.
예를 들어 EST로 설정하면 MySQL이 서버 시간대 모호성에 대해 불평할 수 있습니다. 이 문제를 해결하려면 연결 URL에 정확한 EST 시간대를 지정하세요.
jdbc:mysql://localhost/mydb?useLegacyDatetimeCode=false&serverTimezone=America/New_York
이는 MySQL에서 모호성 문제가 발생하는 경우에만 필요합니다.
위 내용은 Java를 MySQL 데이터베이스에 연결할 때 시간대를 올바르게 처리하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!