SQL 시간대 문제는 보고서 오류, 회의 시간 불일치, 일광 절약 시간(DST)으로 인한 데이터 불규칙성 등 심각한 결과를 초래합니다. ⏰
모든 타임스탬프를 UTC(협정 세계시)로 저장하는 것이 핵심 원칙입니다. UTC는 계절 변화에 영향을 받지 않고 일관성을 유지하여 데이터 비교 및 정렬을 용이하게 합니다. 🌍
Oracle의 SYSTIMESTAMP AT TIME ZONE UTC, SQL Server의 GETUTCDATE(), MySQL의 UTC_TIMESTAMP(), PostgreSQL의 NOW() AT TIME ZONE UTC와 같이 각 데이터베이스에 맞는 함수를 사용하여 현재 UTC 시간을 정확히 기록해야 합니다. ⚙️
데이터베이스별로 TIMESTAMP WITH TIME ZONE (Oracle, PostgreSQL), DATETIMEOFFSET (SQL Server), TIMESTAMP (MySQL)와 같은 올바른 데이터 유형을 사용하여 시간대 정보를 보존해야 합니다. 💾
사용자에게 현지 시간을 표시할 때는 애플리케이션에서 UTC 시간을 변환하거나, 사용자의 IANA 시간대 식별자(예: "America/Los_Angeles")를 저장하여 정확한 지역별 시간 계산을 가능하게 해야 합니다. 📍
+05:30과 같은 고정 오프셋 대신 IANA 시간대 이름을 사용해야 합니다. 고정 오프셋은 일광 절약 시간으로 인해 오류를 발생시킬 수 있습니다. 🚫
데이터베이스 서버의 시간대에 의존하지 말고, 데이터를 일별로 그룹화할 때는 일관성을 위해 모든 타임스탬프를 단일 시간대로 변환해야 합니다. ⚠️
일광 절약 시간 전환 시 특정 시간이 존재하지 않거나 중복될 수 있으므로, 이러한 특이점을 인지하고 처리해야 합니다. ☀️