본문 바로가기
운영 log (운영)/backend

Sequelize, 왜 9시간 차이가 발생하는 걸까?

by abbear25 2021. 2. 25.

Node.js로 API 서버를 개발할 때 대부분 Sequelize를 사용하게 됩니다.

Sequelize의 기본 시간설정은 Universal Time Coordonne (이하 UTC)를 사용합니다.

 

UTC는 영국의 그리니치 천문대 시간을 기준점으로 합니다.

이 기준점을 기준으로 우리나라 (Asia/Seoul)는 9시간이 빠릅니다.

UTC +09:00로 표현할 수 있습니다.

Greenwich

기본설정이 UTC로 되어있기 때문에 MySQL 데이터베이스 (이하 DB)에 DATETIME 형태로 Insert를 하게되면

정확히 9시간 차이로 저장됩니다.

moment-timezon 모듈도 사용했는데 9시간 차이가 발생하는 이상함을 감지할 수 있습니다.

 

문제를 해결하기 위해서 아래와 같이 Sequelize의 config.json 파일에 timezone 설정을 추가 해주면 됩니다.

우리나라 (Asia/Seoul)가 UTC기준으로 9시간 빠르기 때문에 9시간을  더해줍니다.

{
  "development": {
    "username": "dev",
    "password": "dev123!",
    "database": "illua",
    "host": "127.0.0.1",
    "dialect": "mysql",
    "timezone": "+09:00" //utc +09:00
  },

 

문제 해결에 도움되셨다면 좋겠습니다.

감사합니다.

반응형