문제
기존 Sequelize에서 날짜형(date, timestamp)을 저장시 -09:00 된 값으로 저장이 되었지만 mysql에서 값을 불러올 때에도 sequelize가 자동으로 +09:00 된 값으로 계산후 값을 반환했기 때문에 전혀 문제가 없었다.
EX) sequelize "6월 4일 00:00" 저장 시 => 실제 mysql에 저장되는 값 "6월 3일 15:00"
하지만 최근 mysql에 저장되는 타임존을 UTC(국제표준시)에서 KST(한국표준시)로 변경한 것이 화근이었다. 한국 시간으로 값을 넣었는데 mysql timezone이 KST임에도 불구하고 sequelize가 -09:00 된 값으로 시간을 저장하게 되었버렸다.
const Sequelize = require("sequelize");
// Option 1: Passing parameters separately
const sequelize = new Sequelize(
process.env.MYSQL_DB,
process.env.MYSQL_USER,
process.env.MYSQL_PASS,
{
host: process.env.MYSQL_URL,
dialect: "mysql",
timezone: "+09:00", // DB에 저장할 때 시간 설정
dialectOptions: {
timezone: "+09:00", // DB에서 가져올 때 시간 설정
}
);
module.exports = sequelize;
위와 같이 sequelize 설정에서 저장할 때, 불러올 때를 따로 시간대를 설정할 수 있다.