[MySQL] DB 서버 시간 표준 시간으로 적용 (Spring)

2023. 12. 26. 12:05기술 창고/DataBase

728x90
SMALL

MySQL을 사용하여 데이터를 input 할 때 datetime이나 현재 데이터를 넣은 시간을 기록으로 DB 상에 남겨 놓을 때 현재 아시아 표준 시간이 아닌 외국 표준 시간으로 반영되어 들어가는 경우가 존재합니다.

 

이를 아시아 표준 시간으로 적용 시켜야 이후 프로젝트를 운용할 때 이슈가 발생하지 않을 것입니다.

오늘은 간단하게 아시아 표준 시간으로 적용 시키는 방법을 정리해보겠습니다.

 

 

(1) DB 상에서 현 Time Zone 확인

우선 MySQL 워크벤치에서 현재 server time zone이 어떻게 설정되어있는지 확인해줍니다.

방법은 대표적으로 두 가지가 있습니다.

 

첫 번째는, Server 탭의 Status and System Variables 항목을 선택하고 System Variable 메뉴에 Time_zone을 입력하여 나온 시간 설정 값들을 확인해줍니다.

위의 이미지를 확인해보았을 때, system_time_zone 은 KST, time_zone 은 SYSTEM 으로 나오고 있는데, 이 말인 즉슨 기본 시간 설정을 표준 시간으로 설정해주지 않았다는 것입니다.

 

 

다시 한번 select @@global.time_zone, @@session.time_zone; 명령어를 입력하여 time_zone을 확인해줍니다.

마찬가지로 SYSTEM 이 나오면서 표준 시간으로 설정되지 않았음을 알 수 있습니다.

 

 

(2) DB 커넥션 url 파라미터 설정

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://{데이터베이스 ip}:3306/{데이터베이스 명}?serverTimezone=UTC&characterEncoding=UTF-8
spring.datasource.username={데이터베이스 계정 ID}
spring.datasource.password={데이터베이스 계정 비밀번호}

Spring 에서 MySQL 설정을 해준 application.properties 파일에서 jdbc 설정값의 url 부분에 serverTimezone 파라미터를 추가하고, UTC로 지정해주면 표준 시간대로 적용되게 됩니다.

 

728x90
반응형
LIST