반응형
때때로 MySQL에 날짜를 저장할 때 Database의 날짜가 시스템이나 JVM과 다르다는 것을 알게 됩니다. 이런 경우에는 Timezone을 설정하면 됩니다.
방법 1. URL parameter로 Timezone 설정
MySQL은 기본적으로 useLegacyDatetimeCode=true를 사용합니다. Timezone을 변경하려면 이 옵션을 false로 변경해야 합니다. 또한 serverTimezone 옵션도 추가해야 합니다.
아래와 같이 application.properties에 적어줍니다.
spring.datasource.url=jdbc:mysql://loalhost:3306/test
?serverTimezone=UTC
&useLegacyDatetimeCode=false
spring.datasource.username=root
spring.datasource.password=test
방법 2. Spring Boot 옵션
JPA를 사용할 경우 아래와 같이 옵션을 적용할 수 있습니다.
단, 방법 1에서 사용했던 useLegacyDatetimeCode=false 옵션도 적용해야 합니다.
spring.jpa.properties.hibernate.jdbc.time_zone=UTC
방법 3. JVM 기본 시간대 변경
아래와 같이 JVM 기본 시간대를 변경할 수 있으나, 이 방법 또한 useLegacyDatetimeCode=false 옵션도 적용해야 합니다.
@PostConstruct는 Bean이 완전히 초기화 된 후, 단 한번만 호출되는 메소드 입니다.
@PostConstruct
void started() {
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}
방법 4. Java 실행 옵션으로 timezone 적용
아래와 같이 jar를 실행 할 때 -Duser.timezone 옵션으로 timezone을 변경할 수 있습니다.
단, 이 경우에는 매번 지정해줘야 하기 때문에 번거로움이 있을 수 있습니다.
java -jar -Duser.timezone=Asia/Seoul test.jar
reference
728x90
반응형
'웹 개발' 카테고리의 다른 글
Spring boot Profile 설정 (0) | 2021.01.01 |
---|---|
java test plugin - Infinitest (0) | 2020.12.26 |
JSP의 JSTL에서 LocalDateTime 사용하는 방법 (0) | 2020.12.26 |
Spring Boot - jar 안의 파일 읽을 때 FileNotFoundException (0) | 2020.12.26 |
Get first and last day of month, LocalDate (0) | 2020.12.25 |