sql >> Databáze >  >> RDS >> Mysql

Ukládání konkrétních hodnot data/času pro uživatele v různých časových pásmech

Protože mluvíte o plánování budoucnosti čas, pouze UTC není nutně nejlepší přístup.

Mějte na paměti, že pravidla časových pásem se mohou (a mění) měnit. Pokud použijete aktualizaci údajů o časovém pásmu (v PHP se to provádí pomocí PECL timezonedb balíček), pak mohou být všechna data, která jste již převedli na UTC, neplatná.

Lepším řešením je uložit více hodnot:

  • Původní místní datum a čas

  • Původní časové pásmo (např. "America/New_York" )

  • Datum a čas UTC převedené z místních hodnot

Když chcete zjistit, zda je čas spustit úlohu, porovnali byste aktuální datum a čas UTC s uloženou hodnotou UTC.

Když použijete aktualizace časového pásma, vyhodíte předchozí převedené hodnoty UTC pro všechny budoucí položky a přepočítáte nové na základě aktualizovaných dat.

Pokud to neuděláte, ztrácíte záměr, který uživatel původně poskytl. A pokud nebudete aktualizovat údaje o svém časovém pásmu, pak váš systém nebude vědět o různých změnách, které se dějí po celém světě, jako jsou změny provedené v Egyptě na začátku tohoto roku nebo změny přicházející v říjnu pro Rusko.

Poslední bod – Při správné implementaci by na časovém pásmu vašeho serveru nemělo záležet. Porovnejte UTC s UTC.




  1. Získání sloupce z .sqlite obsahujícího více tabulek s více sloupci

  2. Programově vytvořte objekt `DataSource` pro Postgres JDBC

  3. Aktualizujte řádek daty z jiného řádku ve stejné tabulce

  4. Knee-Jerk Wait Statistics :PAGELATCH