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

Jak ustawić strefę czasową MySQL?

Pomyślałem, że to może być przydatne:

Istnieją trzy miejsca, w których strefa czasowa może być ustawiona w MySQL:

W pliku „my.cnf” w sekcji [mysqld]

default-time-zone='+00:00'

@@global.time_zone zmienna

Aby zobaczyć, na jaką wartość są ustawione:

SELECT @@global.time_zone;

Aby ustawić jej wartość, użyj jednej z nich:

SET GLOBAL time_zone = '+8:00';
SET GLOBAL time_zone = 'Europe/Helsinki';
SET @@global.time_zone = '+00:00';

(Użycie nazwanych stref czasowych, takich jak „Europa/Helsinki”, oznacza, że ​​musisz mieć poprawnie wypełnioną tabelę stref czasowych).

Pamiętaj, że +02:00 jest offsetem. Europe/Berlin to strefa czasowa (która ma dwa przesunięcia) i CEST to czas zegarowy, który odpowiada określonemu przesunięciu.

Zmienna @@session.time_zone

SELECT @@session.time_zone;

Aby to ustawić, użyj jednego:

SET time_zone = 'Europe/Helsinki';
SET time_zone = "+00:00";
SET @@session.time_zone = "+00:00";

Oba mogą zwrócić SYSTEM, co oznacza, że ​​używają strefy czasowej ustawionej w my.cnf.

Aby nazwy stref czasowych działały, musisz skonfigurować tabele informacji o strefach czasowych, które muszą być wypełnione:http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html . Wspominam również o tym, jak wypełnić te tabele w tej odpowiedzi .

Aby uzyskać aktualne przesunięcie strefy czasowej jako TIME

SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);

Zwróci 02:00:00, jeśli twoja strefa czasowa to +2:00.

Aby uzyskać aktualny znacznik czasu UNIX:

SELECT UNIX_TIMESTAMP();
SELECT UNIX_TIMESTAMP(NOW());

Aby uzyskać kolumnę sygnatury czasowej jako sygnaturę czasową UNIX

SELECT UNIX_TIMESTAMP(`timestamp`) FROM `table_name`

Aby uzyskać kolumnę daty i godziny UTC jako znacznik czasu UNIX

SELECT UNIX_TIMESTAMP(CONVERT_TZ(`utc_datetime`, '+00:00', @@session.time_zone)) FROM `table_name`

Uwaga:zmiana strefy czasowej nie zmieni zapisanej daty i godziny, ani znacznika czasu , ale pokaże inną datę i godzinę dla istniejących kolumn sygnatur czasowych, ponieważ są one wewnętrznie przechowywane jako sygnatury czasowe UTC i zewnętrznie wyświetlane w bieżącej strefie czasowej MySQL.

Tutaj zrobiłem ściągawkę:Czy MySQL powinien mieć swoją strefę czasową ustawioną na UTC?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przełączanie awaryjne baz danych dla witryn WordPress

  2. Jak połączyć dwa stoły mysql?

  3. Jak połączyć bazę danych MySQL z witryną PHP?

  4. Zamień na składnię zapytania

  5. Jak grupować według tygodnia w MySQL?