sql >> Database >  >> RDS >> PostgreSQL

Postgres voorkomt tijdstempel met tijdzoneconversie

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 date in één veld en sla een time with time zone op in een andere. (hoewel time with time zone wordt 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 .




  1. Hoe een auto-increment-ID toe te voegen volgens een groep in mysql

  2. PostgreSQL - query tegen GIN-index van HSORE-waarde

  3. Manieren om toegang te krijgen tot Oracle Database in PostgreSQL

  4. Wat zijn de voor- en nadelen van het opslaan van bestanden in een database?