본문 바로가기

Trouble Shooting

[java] mybatis timezone이 +9 되어 출력 될 때 (mySQL)

문제 사항

- mybatis를 이용해 LinkedHashMap<String, Object>로 데이터를 return 받을 때, DB에 저장 되어있는 시간(datetime)보다 +9 시간이 되어 출력 됨

 

원인 파악

추측 1) mySql과 서버(java)의 타임존이 동일하지 않음 

          > (X) 확인 결과, 둘 다 UTC+9로 설정 되어있음

 

- 정확한 원인 파악은 하지 못하였지만,

LinkedHashMap<String, Object>로 데이터를 리턴 하며 Timestamp로 변환하는 과정에서 DB에서 뽑아온 값에 timezone을 맞춰 +9를 한 것으로 보임

 

해결 방안

1) 시간 값 가공

   뽑아온 값에 -9 시간을 하여 시간 값을 다시 맞춰 줌

 

2) 쿼리를 datetime to String 으로 수정

   저는 엑셀 다운로드 쪽 구현 시 문제가 생기었기 때문에 그냥 애초부터 문자열로 받아오는 식으로 수정했습니다.

DATE_FORMAT({컬럼명}, '%Y-%m-%d %H:%i:%s')