Uw voorgestelde oplossing is correct. Of beter gezegd, het is een van de vele juiste implementaties. Elk van de volgende dingen zou werken:
- Sla de UTC-tijdstempel op in het ene veld, sla de offset op in een ander.
- Bewaar de lokale tijdstempel in het ene veld, sla de offset op in een ander.
- Bewaar de lokale
datein één veld en sla eentime with time zoneop in een andere. (hoeweltime with time zonewordt over het algemeen afgeraden...) - Bewaar de UTC-tijdstempels in het ene veld en de lokale tijdstempels in een ander.
Veruit de gemakkelijkste is de eerste, die je al hebt voorgesteld.
Ik zou vermijden om tijdstempels op te slaan in text velden, omdat ze meestal niet erg efficiënt doorzoekbaar zijn.
Merk ook op:als u uit een SQL Server-achtergrond komt, herinnert u zich misschien de datetimeoffset type, dat de lokale datetime en offset in het veld opslaat en het UTC-equivalent gebruikt tijdens het indexeren. Het is gebruikelijk om te denken dat de timestamp with time zone van Postgres en MySQL zouden hetzelfde gedrag vertonen, maar dat doen ze niet. Ze gebruiken gewoon de sessie tijdzone om te converteren naar/van UTC. SQL Server heeft geen concept van een sessietijdzone, en dus de discrepantie.
Lees zeker dit deel van de Postgres-documenten .