
분명 Timestamp 컬럼으로 테이블을 만들었고 LocalDateTime으로 선언해서 시간을 넣어주었는데 시간 값이 이상하게 들어갔다.
DBeaver에서 SHOW TIMEZONE; 실행해봐도 Asia/Seoul이라고 잘 뜨는데도 그랬다. 도대체 원인이 뭘까?
그런데,
테스트 용으로 돌리던 로컬 DB에서는, 시간 값이 정확했다.
원인은 AWS EC2였다...
EC2의 기본 타임존은 UCT이다.
아시아 태평양, 서울 리전으로 개설했어도 똑같다. DB의 타임존이 한국시간으로 되어있더라도 서버의 기본타임존은 UCT다.
UCT는 한국시간과 9시간 차이난다. 이 기본 타임존을 한국 시간으로 바꾸지 않으면 Java에서 생성되는 시간도 모두 9시간 전으로 설정된다.
EC2 서버 실행 하고 date로 시간대를 확인한다.

sudo timedatectl set-timezone Asia/Seoul
timedatectl 명령어를 사용해서 Asia/Seoul timeZone으로 바꾼다.
다시 date를 사용해서 시간대를 확인한다.

KST로 바뀐 모습을 확인할 수 있다.