sql >> Database teknologi >  >> RDS >> Mysql

Lagring af specifikke dato-/tidsværdier for brugere i forskellige tidszoner

Da du taler om planlægning af fremtiden tid, kun lagres UTC er ikke nødvendigvis den bedste tilgang.

Husk, at tidszonereglerne kan (og gør) ændre sig. Hvis du anvender en opdatering til dine tidszonedata (i PHP sker det med PECLs timezonedb pakke), kan alle data, du allerede har konverteret til UTC, være ugyldige.

Den bedre løsning er at gemme flere værdier:

  • Den oprindelige lokale dato og tid

  • Den oprindelige tidszone (f.eks. "America/New_York" )

  • UTC-datoen og -klokkeslættet, konverteret fra de lokale værdier

Når du vil se, om det er tid til at køre opgaven, skal du sammenligne den aktuelle UTC-dato og -klokkeslæt med den gemte UTC-værdi.

Når du anvender tidszoneopdateringer, smider du de tidligere konverterede UTC-værdier ud for alle fremtidige poster og genberegner nye baseret på de opdaterede data.

Hvis du ikke gør dette, mister du den hensigt, som brugeren oprindeligt angav. Og hvis du ikke holder dine tidszonedata opdateret, vil dit system ikke være opmærksom på forskellige ændringer, der sker rundt om i verden, såsom ændringerne foretaget i Egypten tidligere på året, eller ændringerne, der kommer i oktober for Rusland.

Sidste punkt - Hvis det implementeres korrekt, bør tidszonen på din server ikke betyde noget. Sammenlign UTC med UTC.




  1. EM12c tillader nu DB12c til Repos

  2. Sådan tilføjes fremmednøglebegrænsning til eksisterende tabel i SQL Server - SQL Server / TSQL vejledning del 68

  3. Netværksadapteren kunne ikke etablere forbindelsen, når den oprettede forbindelse til Oracle DB

  4. Find det samlede antal resultater i mySQL-forespørgsel med offset+limit