home

Postgresql에서 timestamp와 timestamptz의 차이

Mysql의 TIMESTAMP와 DATETIME 처럼, 이 둘의 차이는 어떤 것이 있을까? 생각하여 간단하게 정리해보았습니다.

timestamp (without time zone)

  • 시간대 정보 없이 날짜와 시간만 저장
  • 입력한 값 그대로 저장되고, 조회 시에도 그대로 반환
  • 서버나 클라이언트의 시간대 설정과 무관
INSERT INTO events (created_at) VALUES ('2025-11-28 14:30:00');
  • 저장: 2025-11-28 14:30:00
  • 조회: 2025-11-28 14:30:00 (항상 같음)

    timestamptz (with time zone)

  • 시간대 정보를 포함하여 저장 (내부적으로는 UTC로 변환)
  • 조회 시 세션의 시간대(SET timezone)에 맞춰 자동 변환
  • 글로벌 서비스에 적합
  • 한국 시간대에서 입력 (UTC+9)
SET timezone = 'Asia/Seoul';
INSERT INTO events (created_at) VALUES ('2025-11-28 14:30:00+09');
  • 저장: 2025-11-28 05:30:00 UTC (내부적으로 UTC 변환)
  • 한국에서 조회: 2025-11-28 14:30:00+09
  • 미국에서 조회: 2025-11-27 21:30:00-08 (PST 기준)