Postgres에서 timestamp with timezone 타입을 사용하면 default timezone이 보통 UTC로 잡혀 있다.
이를 한국 시간으로 변경하기 위해서는 아래와 같은 쿼리를 사용하면 된다.
ALTER 명령으로 데이터베이스 연결 끊고, 다음에 접속해도 계속 해당 타임존 상태가 유지된다.
ALTER DATABASE postgres SET TIMEZONE='Asia/Seoul';
로컬 환경에서 돌릴 때는 한국 시간 기준으로 잡혀서 이런 점이 문제가 안됐는데, AWS의 RDS를 사용하다보니 이런 이슈가 생겼다.
python에서 datetime 변수를 한국 기준 timezone으로 세팅해서 INSERT를 했는데도 계속 UTC 기준 시간(한국시간-9시간) 형태가 표시되는 문제가 있었다.
set timezone='Asia/Seoul'
위처럼 설정하게 되면, 현재 DB 연결된 세션에만 적용되는 거라, 다음에 연결하면 타임존이 다시 UTC로 돌아간다.
timezone 자체가 서울이 아니면(ex. UTC), timestamp without timezone 값 역시, UTC 기준으로 들어가게 된다.
timestamp with timezone 을 하면, timezone을 바꿨을 경우, 세팅된 현재 timezone 기준으로 값이 바뀌지만,
timestamp without timezone 의 경우는, 처음 세팅된 값으로 유지된다.
(물론 timestamp without timezone을 timestamp with timezone 타입으로 변경 가능하다.)