postgres를 접하다 보면 이런 상황이 생길수 있다.
현재 시간은 22시인데 왜 지금 생성한 인스턴스의 생성된 시간은 13시 이지???
이런적을 한번이라도 겪은 적이 있다면 timezone에 대해 알아야할 필요가 있다.
timezone이 뭘까?? => 특정 국가나 지역의 현지시간(local time)이다
국제 표준시가 있다. UTC(Universal Time Coordinated)이다.
영국런던에 위치한 그리니치 천문대를 기준으로 하는 GMT(그리니티 평균시)가 있는데 이것과 UTC는 소숫점 단위에서만 차이가 난다.
그리니치 천문대를 기준으로 동쪽은 +, 서쪽은 -로 표시한다.
우리나라는 +09.00 이다.
dbms인 postgres에서는 명령어를 통해 설정되어 있는 timezone을 볼 수 있다.
SHOW TIMEZONE;
아래는 각기 다른 환경에서 Timezone을 조회해본 것이다.
다르게 나오는 것을 확인할 수 있다.
이제 현재 시간을 가져와 보자
SELECT NOW();
현재 시간은 23:33 분인데 timezone이 utc인 곳에서는 9시간을 뺀 시간으로 조회가 된다.
Timezone이 9시간 차이가 나는 utc이기 때문이다.
필요에 의해 아래 코드와 같이 timezone을 변경할 수 있다.
SET TIME ZONE 'America/Montreal';
정말 필요할때만 위와 같이 timezone을 변경하는 것이 좋다.
글로벌 서비스일 경우 timezone을 바꾸었다간 큰 혼란이 올 수 있다.
따라서 프론트에서 moment.js나 day.js 등을 통해 보여줄때만 변환해서 보여주는 것이 안전하다.
day.js는 최근에 알게된 라이브러리 인데 moment.js가 파일 크기가 커서 필요기능만 갖추고 값의 불변성을 제공해주는 day.js와 같은 라이브러리도 요새 많이 쓴다는 것을 알게 되었다.
'데이터베이스 > postgresql' 카테고리의 다른 글
Postgres type casting (0) | 2022.02.26 |
---|---|
postgresql instance update 문 (0) | 2022.01.18 |
Postgres에 백업하기 (0) | 2020.02.02 |