글로벌 서비스를 대비하여, typeORM 사용시 DB 타임존을 어떻게 적용할지 정리하였습니다.
typeORM 사용시 다음 절차를 통해, 타임존을 올바르게 설정해 사용할 수 있습니다.
- DB 타임존 확인하기
- typeORM의 타임존 설정
- 설정된 타임존 확인하기
DB 타임존 확인하기
DB의 타임존은 다음 쿼리로 확인할 수 있습니다. 현재 저는 AWS RDS mySQL을 사용하고 있어서, 파라미터 그룹 변경을 통해 타임존을 설정할 수 있어요. 참고자료: https://aws.amazon.com/ko/premiumsupport/knowledge-center/rds-change-time-zone/
select NOW(),@@global.time_zone, @@session.time_zone;
그럼 아래와 같이 결과가 나오며, 타임존에 따라 시간이 다르게 표현되는 것을 확인할 수 있습니다.
- 한국시간(KST, UTC+09:00)
- UTC
typeORM의 타임존 설정
앞에서 확인한 타임존에 맞게, typeORM의 타임존 설정을 적용하여야 typeORM을 사용한 코드 상에서 시간 컬럼 값이 올바르게 표시됩니다. DB 타임존이 KST인 경우 ‘+09:00’, UTC인 경우 ‘+00:00’ 혹은 값을 생략하면 됩니다.(명시적인 +00:00값을 선호하는 편입니다)
const typeormConfig: DataSourceOptions = {
type: 'mysql',
// ... DB 설정 ...
timezone: '+09:00',
};
설정된 타임존 확인하기
엔티티의 createdAt 컬럼으로 타임존 적용을 확인하였고, 다음과 같이 타임존 값에 따라 결과가 달라지는 것을 확인할 수 있습니다. 끝의 Z를 통해, UTC format으로 통일된 것도 보이네요. (엔티티를 만들어 쿼리하는 코드는 생략하였습니다.)
// typeormConfig.timezone= '+00:00',
createdAt :: 2021-10-06T17:05:46.000Z
// typeormConfig.timezone= '+09:00',
createdAt :: 2021-10-06T08:05:46.000Z
'Javascript | Typescript > Node.js' 카테고리의 다른 글
[Node.js] Nodemon에서 tsc-watch 로 변경하여 빌드속도 개선하기 (0) | 2021.02.21 |
---|---|
TypeORM 간단 사용법 (0) | 2020.08.02 |
AJV(another json validatiror)를 사용하여 JSON 스키마 검증하기(json schema validation) (0) | 2020.07.19 |