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

Nastavte časové pásmo databáze MySQL na GMT

Ne, není možné změnit časové pásmo pro jednu databázi v rámci instance MySQL.

Můžeme načíst server a klienta time_zone nastavení pomocí dotazu, jako je tento:

SELECT @@global.time_zone, @@session.time_zone;

Můžeme také změnit časové pásmo klienta pro relaci nebo změnit časové pásmo pro celou instanci MySQL.

Ale musíme si být dobře vědomi důsledků, které bude mít tato změna na stávající klientská připojení, a jak DATETIME a TIMESTAMP hodnoty již uložené v instanci budou interpretovány.

Chcete-li nastavit časové pásmo serveru při spuštění instance MySQL, můžeme upravit /etc/my.cnf (nebo kdekoli, odkud se čtou inicializační parametry instance mysql), pod [mysqld] sekce:

[mysqld]
default-time-zone='+00:00' 

-- nebo --

Je také možné (méně žádoucí) přidat --default_time_zone='+00:00' možnost mysqld_safe

POZNÁMKA: Změna nastavení časového pásma na serveru MySQL NEZMĚNÍ hodnoty uložené ve stávajících sloupcích DATETIME nebo TIMESTAMP, ALE protože to účinně mění kontext, ve kterém jsou tyto uložené hodnoty interpretovány, bude to vypadat, že všechny hodnoty JSOU posunuty. (Tam, kde 08:00 znamenalo 8:00 CST, když se časové pásmo serveru změnilo z CST na GMT, bude totéž '08:00' nyní považováno za 8:00 GMT, což by ve skutečnosti bylo 2:00 CST.

Mějte také na paměti, že sloupce TIMESTAMP jsou vždy uloženy v UTC, zatímco sloupce DATETIME nemají časové pásmo.http://dev.mysql.com/doc/refman/5.5/en/datetime.html

Každá klientská relace může změnit nastavení časového pásma pro svou vlastní relaci:

SET time_zone='-06:00';

Ale nic z toho ve skutečnosti „neřeší“ problém převodu časového pásma, pouze to přesune problém převodu.

Na aplikační vrstvě zpracovávající převody časových pásem není nic ve své podstatě „špatného“; někdy je to nejlepší místo k řešení. Jen se to musí dělat správně a důsledně.

(Na nastavení, které popisujete, je zvláštní, že aplikace ukládá hodnoty DATETIME, jako by časové pásmo serveru MySQL bylo nastaveno na GMT, ale časové pásmo serveru MySQL je nastaveno na něco jiného.)



  1. Jak snadno exportovat data Microsoft Access do Excelu

  2. Výmluvné many-to-many-to-many - jak snadno načíst vzdálený vztah

  3. Jak mohu předat pole hodnot mé uložené proceduře?

  4. připojení k databázi laravel vrací nedefinovanou chybu indexu