sql >> Databasteknik >  >> RDS >> Mysql

Lagring av specifika datum/tid-värden för användare i olika tidszoner

Eftersom du pratar om schemaläggning av framtid tid, lagrar endast UTC är inte nödvändigtvis den bästa metoden.

Tänk på att tidszonsregler kan (och gör) ändras. Om du uppdaterar din tidszonsdata (i PHP görs det med PECLs timezonedb paket), kan all data som du redan konverterat till UTC vara ogiltig.

Den bättre lösningen är att lagra flera värden:

  • Det ursprungliga lokala datumet och tiden

  • Den ursprungliga tidszonen (ex. "America/New_York" )

  • UTC-datum och tid, konverterat från de lokala värdena

När du vill se om det är dags att köra uppgiften, jämför du det aktuella UTC-datumet och -tiden med det lagrade UTC-värdet.

När du tillämpar tidszonsuppdateringar kastar du ut de tidigare konverterade UTC-värdena för alla framtida poster och räknar om nya baserat på uppdaterad data.

Om du inte gör detta förlorar du avsikten som användaren ursprungligen angav. Och om du inte håller dina tidszonsdata uppdaterade, kommer ditt system inte att vara medvetet om olika förändringar som händer runt om i världen, som ändringarna som gjordes i Egypten tidigare i år, eller ändringarna som kommer i oktober för Ryssland.

Sista punkten - Om den implementeras på rätt sätt bör tidszonen för din server inte spela någon roll. Jämför UTC med UTC.




  1. Uppladdning av CSV-fil för att hantera statusuppdatering och infoga nya poster

  2. Få åtkomst till MySQL-fältets kommentarer med PHP

  3. MIN() Funktion i MariaDB

  4. Villkorlig SUM på Oracle