Na jednym serwerze, kiedy uruchamiam:
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2009-05-30 16:54:29 |
+---------------------+
1 row in set (0.00 sec)
Na innym serwerze:
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2009-05-30 20:01:43 |
+---------------------+
1 row in set (0.00 sec)
ntp
- i zobacz, co jest dla Ciebie odpowiednie!”Odpowiedzi:
Myś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]
@@ zmienna global.time_zone
Aby zobaczyć, jaką wartość są ustawione:
Aby ustawić dla niego wartość, użyj jednego z nich:
(Użycie nazwanych stref czasowych, takich jak „Europa / Helsinki” oznacza, że musisz odpowiednio wypełnić tabelę stref czasowych).
Pamiętaj, że
+02:00
jest to przesunięcie.Europe/Berlin
jest strefą czasową (która ma dwa przesunięcia) iCEST
jest czasem zegarowym, który odpowiada konkretnemu przesunięciu.@@ zmienna session.time_zone
Aby ustawić, użyj jednego z nich:
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 informacyjne stref czasowych: http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html . Wspominam również, jak wypełnić te tabele w tej odpowiedzi .
Aby uzyskać bieżące przesunięcie strefy czasowej jako
TIME
Zwróci 02:00:00, jeśli twoja strefa czasowa to +2: 00.
Aby uzyskać bieżący znacznik czasu UNIX:
Aby uzyskać kolumnę znacznika czasu jako znacznik czasu UNIX
Aby uzyskać kolumnę godziny UTC jako znacznik czasu UNIX
Uwaga: Zmiana strefy czasowej nie zmieni przechowywanej daty ani godziny , ale pokaże inną datę w istniejących kolumnach znaczników czasu, ponieważ są one wewnętrznie przechowywane jako znaczniki czasu UTC i są wyświetlane zewnętrznie w bieżącej strefie czasowej MySQL.
Zrobiłem tutaj cheatheet: Czy MySQL powinien mieć strefę czasową ustawioną na UTC?
źródło
+00:00
to nie strefa czasowa, to przesunięcie czasowe. Co dzieje się w odniesieniu do DST? Czy pozostaje na poziomie +0 przez cały rok?time_zone="+00:00"
jesteś ustawiania strefy czasowej przy użyciu przesunięcie od UTC, biorąc pod uwagę, że wartość zestaw nigdy się nie zmienia i że nie wynika UTC DST mogę założyć, że pozostaje taka sama przez cały rok.+00:00
wygląda to na przesunięcie, więc to trochę dziwne, że MySQL wybrał to do reprezentowania UTC zamiast po prostu samego łańcucha „UTC”. Dzięki za informację.C:\ProgramData\MySQL\MySQL Server x.x\my.ini
Dla każdego, kto nadal ma ten problem:
Pracował dla mnie. Wystarczy dołączyć
?serverTimezone=UTC
na końcu.źródło
Asia/Ho_Chi_Minh
zamiastUTC
BTW, pytanie dotyczy zmiany strefy czasowej MySQL. Więc spójrz na odpowiedź @Timo. Jeśli masz problemy z dokerem MySQL, dodaj środowisko TZ i powinno działać.SET time_zone=...
Kiedy możesz skonfigurować serwer strefy czasowej dla MySQL lub PHP:
Zapamiętaj:
Zmień system strefy czasowej. Przykład dla Ubuntu:
Uruchom ponownie serwer lub możesz ponownie uruchomić Apache 2 i MySQL:
źródło
Aby ustawić go dla bieżącej sesji, wykonaj:
źródło
SET time_zone = 'America/Boise'
. Dzięki za odpowiedź, James Skidmore!SET time_zone = 'UTC';
ustawienie gubi się podczas restartu serweraPo prostu uruchom to na swoim serwerze MySQL:
Gdzie +8: 00 będzie Twoją strefą czasową.
źródło
@@session.time_zone
opisane w innych odpowiedziach jest znacznie lepszą trasą.Ta praca dla mnie dla lokalizacji w Indiach:
źródło
Możesz określić domyślną strefę czasową serwera podczas uruchamiania, patrz http://dev.mysql.com/doc/refman/5.1/en/server-options.html, a konkretnie
--default-time-zone=timezone
opcję. Możesz sprawdzić strefę czasową globalną i strefową za pomocąustaw jedną lub obie z
SET
instrukcją, & c; więcej informacji na stronie http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html .źródło
Pamiętaj, że „Country / Zone” czasami nie działa… Ten problem nie zależy od systemu operacyjnego, wersji MySQL i sprzętu - poznałem go od FreeBSD 4 i Slackware Linux w 2003 roku do dziś. MySQL od wersji 3 do najnowszej wersji źródłowej. Jest ODD, ale tak się dzieje. Na przykład:
Takie oświadczenie powinno działać:
Ale masz ten problem:
Spójrz na podfolder w katalogu informacji o strefie i zobacz AKTUALNĄ nazwę pliku dla dowiązania symbolicznego, w tym przypadku jest to EST5EDT. Następnie wypróbuj to oświadczenie:
I faktycznie działa tak, jak powinien! :) Pamiętaj o tej sztuczce; Nie widziałem, aby było to udokumentowane w instrukcjach MySQL i oficjalnej dokumentacji. Ale czytanie odpowiedniej dokumentacji jest koniecznością: oficjalna dokumentacja strefy czasowej MySQL 5.5 - i nie zapomnij załadować danych strefy czasowej na swój serwer tak (uruchom jako użytkownik root!):
Sztuczka numer jeden - musi być wykonana dokładnie pod rootem MySQL. Może to zawieść lub wygenerować niedziałający wynik nawet od użytkownika, który ma pełny dostęp do bazy danych MySQL - sam widziałem usterkę.
źródło
Jeśli używasz PDO:
Jeśli używasz MySQLi:
Więcej informacji na temat formatowania przesunięcia tutaj: https://www.sitepoint.com/synchronize-php-mysql-timezone-configuration/
źródło
To pytanie ma 10 lat, ale i tak oto działało dla mnie. Używam MySQL 8.0 z Hibernacja 5 i SpringBoot 4.
Wypróbowałem powyższą akceptowaną odpowiedź, ale nie działało to dla mnie, co zadziałało dla mnie:
Jeśli to pomoże, nie zapomnij go głosować: D
źródło
Starożytne pytanie z jeszcze jedną sugestią:
Jeśli ostatnio zmieniłeś strefę czasową systemu operacyjnego, np. Przez:
... MySQL (lub MariaDB) nie zauważy, dopóki nie uruchomisz ponownie usługi db:
(lub)
źródło
Jeśli korzystasz z MySql Workbench, możesz to ustawić, otwierając widok administratora i wybierając zakładkę Zaawansowane. Górna sekcja to „Lokalizacja”, a pierwszym polem wyboru powinna być „domyślna strefa czasowa”. Zaznacz to pole, a następnie wprowadź żądaną strefę czasową, uruchom ponownie serwer i powinieneś już iść.
źródło
Najpierw dowiedz się, jaka jest strefa czasowa, którą możesz zapytać
Twój wynik powinien wyglądać podobnie do poniższego
Następnie, jeśli chcesz potwierdzić, że masz strefę czasową, taką jak CDT, a nie EST, możesz sprawdzić, o której godzinie myśli, że Twoja maszyna
Jeśli nie jest to czas, którego chcesz, musisz to zmienić ... wszystko, co musisz zrobić, to zrobić
SET time_zone = timezone_name
. Upewnij się, że jest toContinent/City
format.Jeśli korzystasz z serwera współdzielonego, ponieważ masz usługę hostingową, zapoznaj się z tymi odpowiedziami dotyczącymi zmiany pliku php.ini lub pliku .htaccess.
źródło
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql -p E
Najpierw próbowałem, a potemSET time_zone = timezone_name
działało dobrze.Musisz ustawić strefę czasową swojej lokalizacji. Aby postępować zgodnie z poniższym procesem
Otwórz MSQLWorkbench, napisz prostą komendę SQL, taką jak ta;
Twój adres URL może być taki;
źródło
Aby ustawić standardową strefę czasową w MariaDB , musisz przejść do pliku 50-server.cnf .
Następnie możesz wprowadzić następujący wpis w sekcji mysqld.
Przykład:
Zmian należy dokonać za pomocą pliku konfiguracyjnego, w przeciwnym razie serwer MariaDB zresetuje tabele mysql po ponownym uruchomieniu!
źródło
Edytuj plik konfiguracyjny MySQL
Przewiń i dodaj je na dole. Zmień odpowiednią strefę czasową
Uruchom ponownie serwer
źródło
W systemie Windows (IIS), aby móc ustawić GLOBALNĄ strefę czasową = „Europa / Helsinki” (lub cokolwiek innego), najpierw należy wypełnić tabele opisu strefy czasowej MySQL.
Pobrałem je z tego linku https://dev.mysql.com/downloads/timezones.html
Po uruchomieniu pobranego zapytania SQL udało mi się ustawić GLOBALNĄ strefę czasową i rozwiązać problem, w którym miałem WYBIERZ TERAZ (); zwracał raczej GMT niż BST.
źródło
W moim przypadku rozwiązaniem było ustawienie parametru serverTimezone w Ustawieniach zaawansowanych na odpowiednią wartość (CET dla mojej strefy czasowej).
Gdy korzystam z IntelliJ, korzystam z jego modułu bazy danych. Podczas dodawania nowego połączenia do bazy danych i po dodaniu wszystkich odpowiednich parametrów w zakładce Ogólne wystąpił błąd przycisku „Testuj połączenie”. Ponownie rozwiązaniem jest ustawienie parametru serverTimezone w zakładce Zaawansowane.
źródło
Jeśli ktoś korzysta z GoDaddy Shared Hosting, możesz wypróbować następujące rozwiązanie, które dla mnie zadziałało.
Podczas uruchamiania połączenia z DB ustaw komendę time_zone w moim obiekcie PDO, np .:
Gdzie „+05: 30” to strefa czasowa Indii. Możesz to zmienić zgodnie ze swoimi potrzebami.
Po tym; wszystkie procesy MySQL związane z datą i godziną są ustawione na wymaganą strefę czasową.
Źródło: https://in.godaddy.com/community/cPanel-Hosting/How-to-change-TimeZone-for-MySqL/td-p/31861
źródło