Arbeiten mit MySQL-Mariadb-Zeitzonen

Arbeiten mit MySQL-Mariadb-Zeitzonen
Für jedes Programm ist es eine ziemlich häufige Aufgabe.

In diesem Artikel werde ich Ihnen zeigen, wie Sie Zeitzonendatenbanken auf MySQL und MariADB -Datenbankserver installieren und sie verwenden. Ich habe die in diesem Artikel zu Centos 8 und Ubuntu 18 gezeigten Schritte getestet.04 LTS. Aber es sollte auf CentOS/Rhel 7+, Ubuntu 18 funktionieren.04+ und Debian 10+. Also lasst uns anfangen.

Voraussetzungen:

Sie müssen MySQL oder Mariadb auf Ihrem Linux -Betriebssystem installieren lassen (ich.e. Centos/Rhel, Ubuntu/Debian). Wenn Sie Unterstützung bei der Installation von MySQL/MariadB benötigen, gibt es viele Artikel unter LinuxHint.com, was Sie überprüfen können.

Installieren von Zeitzonendaten auf CentOS/Rhel:

In CentOS/rhel die Tzdata Paket bietet Zeitzoneninformationen. Der Tzdata Das Paket sollte standardmäßig installiert werden.

Wenn es auf jeden Fall nicht installiert ist, können Sie es mit den folgenden Befehlen installieren:

$ sudo dnf makecache
$ sudo dnf installt Tzdata

NOTIZ: Bei CentOS/RHEL 7 verwenden Sie Yum anstatt DNF.

Installieren von Zeitzonendaten auf Ubuntu/Debian:

In Ubuntu/Debian die Tzdata Paket bietet Zeitzoneninformationen. Der Tzdata Das Paket sollte standardmäßig installiert werden.

Wenn es auf jeden Fall nicht installiert ist, können Sie es mit den folgenden Befehlen installieren:

$ sudo APT Update
$ sudo apt installieren Sie Tzdata

Konvertieren von Zeitzonendaten in SQL:

Die Zeitzonendaten sollten in der sein /usr/share/zoneInfo/ Verzeichnis von CentOS/Rhel und Ubuntu/Debian OS.

$ ls/usr/share/zoneInfo/

Wie Sie sehen können, sind die Zeitzonendaten in verschiedenen Ordnern gut angeordnet.

Die Zeitzonendatendateien sind binär. Sie können sie nicht direkt mit MySQL/Mariadb -Datenbanken verwenden.

$ cat/usr/share/zoneInfo/Amerika/Toronto

Sie müssen die binären Zeitzonendaten (aus dem konvertieren /usr/share/zoneInfo/ Verzeichnis) zu SQL mit dem mysql_tzinfo_to_sql Programm.

Um die Zeitzonendaten in SQL zu konvertieren, laufen Sie mysql_tzinfo_to_sql folgendermaßen:

$ mysql_tzinfo_to_sql/usr/share/zoneInfo/> ~/zoneInfo.sql

Eine neue Datei zoneInfo.sql sollte in Ihrem Heimverzeichnis erstellt werden. Sie können die Zeitzoneninformationen aus dieser Datei in Ihre MySQL/MariADB -Datenbank importieren.

Zeitzonendaten in MySQL/Mariadb importieren:

Sie können die Zeitzoneninformationen aus dem importieren zoneInfo.sql Datei in die Mysql Datenbank wie folgt:

$ cat ~/zoneInfo.sql | sudo mysql -u root mysql -p

Geben Sie nun Ihr MySQL/MariADB -Datenbank -Root -Passwort ein und drücken Sie . Die Zeitzoneninformationen sollten importiert werden.

Einstellung der Standard-/globalen Zeitzone in MySQL/Mariadb:

Standardmäßig ist die Standard-/globale Zeitzone von MySQL/MariadB auf die Betriebssystemzone eingestellt. Sie können eine andere Standard-/globale Zeitzone festlegen, wenn Sie möchten.

> Wählen Sie @@ time_zone;

Zuerst müssen Sie den Zeitzonennamen finden, den Sie festlegen möchten. Sie finden alle verfügbaren Zeitzonennamen mit der folgenden SQL -Anweisung:

> Wählen Sie den Namen von MySQL aus.TIME_ZONE_NAME;

Sie können auch wie folgt nach Ihrem gewünschten Zeitzonennamen suchen:

> Wählen Sie den Namen von MySQL aus.TIME_ZONE_NAME, wobei der Name '%%';

Jetzt können Sie Ihre gewünschte Zeitzone als Standard-/globaler Zeitzone wie folgt festlegen:

> Global time_zone = "" setzen;

Ihre gewünschte Zeitzone sollte als Standard-/globaler Zeitzone festgelegt werden.

> Wählen Sie @@ time_zone;

Arbeiten mit Zeitzonen in MySQL/Mariadb:

Der Convert_tz () Funktion wird verwendet, um die Zeitzone einer DateTime in MySQL/Mariadb umzuwandeln.

Die Syntax der Convert_tz () Funktion ist:

Convert_tz (DateTime, von_tz, to_tz)

Hier, von_tz Und to_tz kann ein Zeitzonenname sein (ich.e. Asien/Dhaka, Amerika/New_york) oder Zeitzone -Offset (i.e. +06:00, -02: 00).

Der Terminzeit wird von von_tz Zu to_tz Zeitzone.

Sie können den aktuellen Zeitstempel (aktuelles Datum und Uhrzeit) Ihres Computers mit der folgenden SQL -Anweisung ausdrucken:

> Wählen Sie current_timestamp ();

Nehmen wir nun an, Sie möchten die Zeitzone des aktuellen Datums und der Uhrzeit Ihres Computers in die Zeit konvertieren Europa/London. Um das zu tun, können Sie die ausführen Convert_tz () Funktion wie folgt:

> Wählen Sie current_timestamp () als dt_dhaka, convert_tz (current_timestamp (),
@@ Time_Zone, 'Europa/London') als dt_london;

Wie Sie sehen können, wird die Zeitzone der aktuellen DateTime in konvertiert Europa/London erfolgreich.

Sie können auch die Zeitzone mit spezifischem DateTime wie folgt konvertieren:

> Set @dt = '2001-01-03 11:02:11';
> Select @dt, convert_tz (@dt, 'America/Panama', 'Europa/London');

Sie können auch die Zeitzone der DateTime -Felder einer Tabelle konvertieren. Zur Demonstration werde ich in diesem Artikel einen einfachen Geburtstagstisch verwenden.

Erstellen Sie zunächst a Geburtstag Tabelle wie folgt:

> Tabelle Geburtstag erstellen (Name Varchar (20) NICHT NULL,
birth_timestamp datetime nicht null);

Der Geburtstag Tabelle hat nur 2 Felder, Name Und birth_timestamp Wie Sie im Screenshot unten sehen können.

> Geburtstag beschreiben;

Fügen Sie nun einige Dummy -Geburtstagsdaten in die Geburtstag Tabelle wie folgt:

> In Geburtstagswerte einfügen ('Bob', '1997-10-11 12:11:11'),
('Alex', '1987-01-11 01:41:01'), ('Lily', 2001-01-02 20:11:36 ');

Hier sind die Dummy -Geburtstagsdaten.

> Wählen Sie * vom Geburtstag;

Jetzt können Sie die Zeitzone aller Geburtstagszeitstempel umwandeln Europa/London folgendermaßen:

> Wählen Sie den Namen, Birth_Timestamp, convert_tz (Birgd_timestamp, @@ time_zone,
'Europa/London') als London_Birth_Timestamp vom Geburtstag;

Wie Sie sehen können, werden die Geburtstagszeitzonen richtig konvertiert.

So arbeiten Sie im Grunde genommen mit MySQL/Mariadb -Zeitzonen zusammen. Danke, dass du diesen Artikel gelesen hast.