IANA 타임존을 DB 설계에 적용할 때의 핵심은 시간은 항상 UTC로 저장하고, 타임존은 IANA 식별자로 별도 관리하는 것입니다. 아래 기준이 일반적으로 가장 안정적이고 확장성이 좋습니다.
created_at
updated_at
answered_at
TIMESTAMP WITH TIME ZONE
DATETIME
Asia/Seoul
America/New_York
timezone VARCHAR(64)
(1) 질문 테이블
question_id
title
content
author_user_id
author_name_snapshot
created_at_utc
timezone
(2) 답변 테이블
answer_id
작성 당시의 표시명을 유지해야 한다면 author_name_snapshot을 함께 저장하는 방식이 유리합니다.
Intl.DateTimeFormat
moment-timezone
luxon
java.time.ZoneId
정리하면
이 구조가 글로벌 서비스, 장기 운영, DST 대응까지 가장 안전합니다.
아래는 IANA(Time Zone Database, tzdb) 자료를 구할 때 “공식/표준/실무” 기준으로 쓸만한 링크를 한 번에 모은 리스트입니다. (표 + 마지막에 전체 링크 모음까지 포함)
[1] https://www.iana.org/time-zones [2] https://data.iana.org/time-zones/tz-link.html [3] https://data.iana.org/time-zones/data/zone.tab [4] https://data.iana.org/time-zones/tzdb/zone1970.tab [5] https://github.com/eggert/tz [6] ftp://ftp.iana.org/tz/ [7] rsync://rsync.iana.org/tz/ [8] https://lists.iana.org/hyperkitty/list/[email protected]/ [9] https://lists.iana.org/postorius/lists/tz.iana.org/ [10] https://www.rfc-editor.org/rfc/rfc9636.html [11] https://datatracker.ietf.org/doc/html/rfc8536 [12] https://dev.mysql.com/doc/refman/8.3/en/time-zone-support.html [13] https://www.postgresql.org/docs/current/datatype-datetime.html [14] https://github.com/moment/luxon/blob/master/docs/zones.md [15] https://momentjs.com/timezone/docs/ [16] https://docs.oracle.com/javase/8/docs/api/java/time/ZoneId.html [17] https://learn.microsoft.com/en-us/dotnet/core/extensions/globalization-icu [18] https://nodatime.org/3.2.x/userguide/tzdb [19] https://github.com/mattjohnsonpint/TimeZoneConverter [20] https://cldr.unicode.org/ [21] https://unicode-org.github.io/icu/userguide/datetime/timezone/