W tym artykule pokażę Ci, jak zainstalować bazy danych strefy czasowej na serwerze bazy danych MySQL i. Przetestowałem kroki pokazane w tym artykule na Centos 8 i Ubuntu 18.04 LTS. Ale powinien działać na Centos/Rhel 7+, Ubuntu 18.04+ i Debian 10+. Więc zacznijmy.
Wymagania wstępne:
Musisz mieć zainstalowane MySQL lub Mariadb w swoim systemie systemu Linux (i.mi. Centos/Rhel, Ubuntu/Debian). Jeśli potrzebujesz pomocy w instalacji MySQL/MariaDB, na Linuxhint jest wiele artykułów.com, które możesz sprawdzić.
Instalowanie danych stref czasowych na Centos/RHEL:
W Centos/Rhel, tzdata Pakiet zawiera informacje o strefie czasowej. tzdata Pakiet powinien być domyślnie zainstalowany.
Jeśli w każdym razie nie jest zainstalowany, możesz zainstalować go za pomocą następujących poleceń:
$ sudo dnf makeCache
$ sudo dnf instaluj tzdata
NOTATKA: W Centos/Rhel 7, użyj mniam zamiast DNF.
Instalowanie danych stref czasowych na Ubuntu/Debian:
W Ubuntu/Debian, tzdata Pakiet zawiera informacje o strefie czasowej. tzdata Pakiet powinien być domyślnie zainstalowany.
Jeśli w każdym razie nie jest zainstalowany, możesz zainstalować go za pomocą następujących poleceń:
Aktualizacja $ sudo apt
$ sudo apt instal tzdata
Konwersja danych stref czasowych na SQL:
Dane stref czasowych powinny znajdować się w /usr/share/zoneinfo/ Direktory Centos/Rhel i Ubuntu/Debian OS.
$ ls/usr/share/zoneinfo/
Jak widać, dane strefy czasowej są ładnie ułożone w różnych folderach.
Pliki danych strefy czasowej są binarne. Nie możesz ich używać bezpośrednio z bazami danych MySQL/Mariadb.
$ cat/usr/share/zoneinfo/America/Toronto
Musisz przekonwertować dane strefy binarnej (z /usr/share/zoneinfo/ katalog) do SQL za pomocą mysql_tzinfo_to_sql program.
Aby przekonwertować dane strefy czasowej na SQL, uruchom mysql_tzinfo_to_sql następująco:
$ mysql_tzinfo_to_sql/usr/share/zoneinfo/> ~/zoneinfo.SQLNowy plik Zoneinfo.SQL powinien być utworzony w katalogu domowym. Możesz zaimportować informacje o strefie czasowej do bazy danych MySQL/MARIADB z tego pliku.
Importowanie danych stref czasowych do MySQL/MARIADB:
Możesz zaimportować informacje o strefie czasowej z Zoneinfo.SQL plik do Mysql baza danych w następujący sposób:
$ cat ~/zoneinfo.SQL | sudo mysql -u root mysql -pTeraz wpisz swoje hasło do bazy danych mysql/mariadb i naciśnij . Informacje o strefie czasowej powinny być importowane.
Ustawienie domyślnej/globalnej strefy czasowej w MySQL/Mariadb:
Domyślnie domyślna/globalna strefa czasowa MySQL/MARIADB jest ustawiona na strefę czasową OS. Możesz ustawić inną domyślną/globalną strefę czasową, jeśli chcesz.
> Wybierz @@ Time_zone;Po pierwsze, musisz znaleźć nazwę strefy czasowej, którą chcesz ustawić. Wszystkie dostępne nazwy stref czasowych można znaleźć w następującej instrukcji SQL:
> Wybierz nazwę z MySQL.Time_zone_name;Możesz także wyszukać żądaną nazwę strefy czasowej w następujący sposób:
> Wybierz nazwę z MySQL.Time_zone_name, gdzie nazwa jak „%%”;Teraz możesz ustawić żądaną strefę czasową jako domyślną/globalną strefę czasową w następujący sposób:
> Set Global Time_zone = "";Twoja pożądana strefa czasowa powinna być ustawiona jako domyślna/globalna strefa czasowa.
> Wybierz @@ Time_zone;Convert_tz () Funkcja służy do konwersji strefy czasowej datetime w MySQL/Mariadb.
Składnia Convert_tz () Funkcja to:
Convert_tz (DateTime, from_tz, to_tz)Tutaj, from_tz I to_tz może być nazwą strefy czasowej (i.mi. Azja/Dhaka, Ameryka/New_York) lub przesunięcie strefy czasowej (i.mi. +06:00, -02: 00).
Datetime jest przekonwertowany z from_tz Do to_tz strefa czasowa.
Możesz wydrukować bieżący znacznik czasu (bieżąca data i godzina) komputera z następującą instrukcją SQL:
> Wybierz current_timestamp ();Powiedzmy teraz, że chcesz przekonwertować strefę czasową bieżącej daty i godziny komputera na komputer Europa/Londyn. Aby to zrobić, możesz uruchomić Convert_tz () funkcja w następujący sposób:
> Wybierz current_timestamp () jako dt_dhaka, convert_tz (current_timestamp (),Jak widać, strefa czasowa bieżącego datetime jest konwertowana na Europa/Londyn z powodzeniem.
Możesz także przekonwertować strefę czasową konkretnego dataTime w następujący sposób:
> Set @dt = '2001-01-03 11:02:11';Możesz także przekonwertować strefę czasową pól datetime tabeli. Do demonstracji użyję prostego stolika urodzinowego w tym artykule.
Najpierw stwórz urodziny Tabela w następujący sposób:
> Utwórz urodziny w tabeli (nazwa varchar (20) nie null,urodziny Tabela ma tylko 2 pola, nazwa I Birth_timestamp Jak widać na zrzucie ekranu poniżej.
> Opisz urodziny;Teraz wstaw dane urodzinowe do manekina do urodziny Tabela w następujący sposób:
> Wstaw do wartości urodzinowych („Bob”, „1997-10-11 12:11:11”),Oto manekinowe dane urodzinowe.
> Wybierz * z urodzin;Teraz możesz przekonwertować strefę czasową wszystkich czasopisków urodzinowych na Europa/Londyn następująco:
> Wybierz nazwę, Birth_timestamp, Convert_tz (Birth_timestamp, @@ Time_zone,Jak widać, strefy czasowe urodzinowe są poprawnie konwertowane.
Tak więc w zasadzie tak pracujesz ze strefami czasowymi MySQL/. Dziękujemy za przeczytanie tego artykułu.