Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Ustaw strefę czasową bazy danych MySQL na GMT

Nie, nie można zmienić strefy czasowej dla pojedynczej bazy danych w instancji MySQL.

Możemy pobrać serwer i klienta time_zone ustawienia z zapytaniem, na przykład:

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

Możemy również zmienić strefę czasową klienta dla sesji lub zmienić strefę czasową dla całej instancji MySQL.

Ale musimy być bardzo świadomi implikacji, jakie ta zmiana będzie miała dla istniejących połączeń klientów, oraz tego, w jaki sposób DATETIME i TIMESTAMP wartości już zapisane w instancji zostaną zinterpretowane.

Aby ustawić strefę czasową serwera podczas uruchamiania instancji MySQL, możemy zmodyfikować /etc/my.cnf (lub gdziekolwiek są odczytywane parametry inicjalizacji instancji mysql), pod [mysqld] sekcja:

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

-- lub --

Możliwe jest również (mniej pożądane) dodanie --default_time_zone='+00:00' opcja mysqld_safe

UWAGA: Zmiana ustawienia strefy czasowej na serwerze MySQL NIE zmienia wartości przechowywanych w istniejących kolumnach DATETIME lub TIMESTAMP, ALE ponieważ skutecznie zmienia kontekst, w którym te przechowywane wartości są interpretowane, wygląda na to, że wszystkie wartości są przesunięte. (Gdzie 08:00 przyjęto oznaczać 8 rano CST, przy zmianie strefy czasowej serwera z CST na GMT, ten sam „08:00” zostanie teraz uznany za 8 rano GMT, co w rzeczywistości będzie oznaczać 2 w nocy CST.

Pamiętaj też, że kolumny TIMESTAMP są zawsze przechowywane w czasie UTC, podczas gdy kolumny DATETIME nie mają strefy czasowej.http://dev.mysql.com/doc/refman/5.5/en/datetime.html

Każda sesja klienta może zmienić ustawienie strefy czasowej dla własnej sesji:

SET time_zone='-06:00';

Ale nic z tego tak naprawdę nie „rozwiązuje” problemu konwersji strefy czasowej, po prostu przesuwa problem konwersji.

W warstwie aplikacji obsługującej konwersje stref czasowych nie ma nic z natury „złego”; czasami jest to najlepsze miejsce do załatwienia. Po prostu trzeba to zrobić poprawnie i konsekwentnie.

(Dziwne w opisanej konfiguracji jest to, że aplikacja przechowuje wartości DATETIME tak, jakby strefa czasowa serwera MySQL była ustawiona na GMT, ale strefa czasowa serwera MySQL jest ustawiona na coś innego.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kreator zapytań nie wstawia znaczników czasu

  2. MYSQL Konwertuj znacznik czasu na miesiąc

  3. Jak wyświetlić kolejny numer w wyniku zapytania MySQL

  4. Formularz zgłoszeniowy nie pozostanie na tej samej stronie

  5. Lokalizacja tabel bazy danych - MySQL - Windows XP