mysql에 데이터 조회 시 timezone 적용이 안되는 경우

hyeongirlife·2022년 3월 20일
0

TIL

목록 보기
75/90
post-thumbnail

timezone 설정

config.js에서 데이터 입력 시 UTC시간 기준 +9시간을 적용해야 아시아 시간을 적용할 수 있기 때문에 timezone :+09:00 을 적용해준다.

module.exports = {
  "development": {
    "username": process.env.DATABASE_USER,
    "password": process.env.DATABASE_PASSWORD,
    "database": process.env.DATABASE_NAME,
    "host": "127.0.0.1",
    "dialect": "mysql",
    "timezone": "+09:00",

이렇게 되면 mysql db 조회 시 timezone이 적용된 데이터가 삽임되었음을 알 수 있다.

그러나 이렇게 저장된 데이터를 추출해 클라이언트로 응답하게 되면 timezone이 적용되지 않은 이전 시간으로 적용된다.

검색 결과

node.js는 timezone 설정을 서버시간에 의존하여 설정되지 않는다고 한다.

그렇기 때문에 데이터를 로드할 때 원래 시간을 읽어서 timestamp에 적용한다는 것이다.

이럴 때 로드할 때의 날짜를 string 형태로 가져오면 timezone의 값을 역으로 계산하지 않는다.

var seqConfig = {
  ...
  timezone: config.database.timezone,
  dialectOptions: {
      charset: 'utf8mb4',
      dateStrings: true,
      typeCast: true
  }
  ,define: {
    timestamps: true
  }
}
profile
머릿속에 있는 내용을 정리하기

0개의 댓글