In questo articolo, ti mostrerò come installare i database di fuso orari sul server di database MySQL e MariaDB e usarlo. Ho testato i passaggi mostrati in questo articolo su CentOS 8 e Ubuntu 18.04 LTS. Ma dovrebbe funzionare su CentOS/RHEL 7+, Ubuntu 18.04+ e Debian 10+. Quindi iniziamo.
Prerequisiti:
Devi avere mysql o MariaDB installato sul tuo sistema operativo Linux (i.e. Centos/Rhel, Ubuntu/Debian). Se hai bisogno di assistenza sull'installazione di MySQL/MARIADB, ci sono molti articoli su LinuxHint.com che puoi controllare.
Installazione dei dati del fuso orario su CentOS/RHEL:
In Centos/Rhel, il tzdata Il pacchetto fornisce informazioni fuso orarie. IL tzdata Il pacchetto deve essere installato per impostazione predefinita.
Se in ogni caso, non è installato, è possibile installarlo con i seguenti comandi:
$ sudo dnf makecache
$ sudo dnf Installa tzdata
NOTA: Su CentOS/RHEL 7, usa Yum invece di dnf.
Installazione dei dati del fuso orario su Ubuntu/Debian:
In Ubuntu/Debian, il tzdata Il pacchetto fornisce informazioni fuso orarie. IL tzdata Il pacchetto deve essere installato per impostazione predefinita.
Se in ogni caso, non è installato, è possibile installarlo con i seguenti comandi:
$ sudo apt update
$ sudo apt install tzdata
Convertire i dati del fuso orario in SQL:
I dati del fuso orario dovrebbero essere in /usr/share/zoneinfo/ Directory of Centos/Rhel e Ubuntu/Debian OS.
$ ls/usr/share/zoneinfo/
Come puoi vedere, i dati del fuso orario sono ben disposti in diverse cartelle.
I file di dati del fuso orario sono binari. Non puoi usarli direttamente con i database MySQL/MariaDB.
$ cat/usr/share/zoneinfo/America/Toronto
È necessario convertire i dati del fuso orario binario (da /usr/share/zoneinfo/ directory) a SQL usando il mysql_tzinfo_to_sql programma.
Per convertire i dati del fuso orario in SQL, eseguire mysql_tzinfo_to_sql come segue:
$ mysql_tzinfo_to_sql/usr/share/zoneinfo/> ~/zoneinfo.SQLUn nuovo file zoneinfo.SQL dovrebbe essere creato nella tua home directory. È possibile importare le informazioni di fuso orario nel tuo database MySQL/MARIADB da questo file.
Importazione dei dati del fuso orario su MySQL/MARIADB:
È possibile importare le informazioni di fuso orario da zoneinfo.SQL file nel mysql database come segue:
$ cat ~/zoneinfo.SQL | sudo mysql -u root mysql -pOra, digita la password di root del database MySQL/MARIADB e premere . Le informazioni del fuso orario devono essere importate.
Impostazione del fuso orario predefinito/globale in MySQL/MARIADB:
Per impostazione predefinita, il fuso orario predefinito/globale di MySQL/MARIADB è impostato sul fuso orario del sistema operativo del sistema operativo. È possibile impostare un fuso orario predefinito/globale diverso se lo desideri.
> Seleziona @@ time_zone;Innanzitutto, devi trovare il nome del fuso orario che vuoi impostare. Puoi trovare tutti i nomi dei fuso orari disponibili con la seguente istruzione SQL:
> Seleziona il nome da MySQL.time_zone_name;Puoi anche cercare il nome del fuso orario desiderato come segue:
> Seleziona il nome da MySQL.time_zone_name dove nome come '%%';Ora puoi impostare il fuso orario desiderato come predefinito/fuso orario globale come segue:
> Imposta Global Time_zone = "";Il fuso orario desiderato dovrebbe essere impostato come fuso orario predefinito/globale.
> Seleziona @@ time_zone;IL Convert_tz () La funzione viene utilizzata per convertire il fuso orario di un DateTime in MySQL/MariaDB.
La sintassi del Convert_tz () La funzione è:
Convert_tz (datetime, from_tz, to_tz)Qui, da_tz E to_tz Può essere un nome di fuso orario (i.e. Asia/Dhaka, America/New_York) o Offset di fuso orari (i.e. +06:00, -02: 00).
IL appuntamento viene convertito da da_tz A to_tz fuso orario.
È possibile stampare il timestamp corrente (data e ora corrente) del computer con la seguente istruzione SQL:
> Seleziona current_timestamp ();Ora, diciamo, vuoi convertire il fuso orario della data e dell'ora corrente del tuo computer a Europa/Londra. Per fare ciò, puoi eseguire il Convert_tz () funzione come segue:
> Seleziona current_timestamp () come dt_dhaka, convert_tz (current_timestamp (),Come puoi vedere, il fuso orario dell'attuale DateTime viene convertito in Europa/Londra con successo.
Puoi anche convertire il fuso orario di dati specifici come segue:
> Set @dt = '2001-01-03 11:02:11';Puoi anche convertire il fuso orario dei campi datetime di una tabella. Per dimostrazione, userò una semplice tabella di compleanno in questo articolo.
Innanzitutto, crea un compleanno Tabella come segue:
> Crea compleanno della tabella (nome varchar (20) non null,IL compleanno La tabella ha solo 2 campi, nome E nascita_timestamp Come puoi vedere nello screenshot qui sotto.
> Descrivi il compleanno;Ora, inserisci alcuni dati di compleanno fittizio nel compleanno Tabella come segue:
> Inserisci nei valori di compleanno ("Bob", "1997-10-11 12:11:11"),Ecco i dati di compleanno fittizio.
> Seleziona * dal compleanno;Ora puoi convertire il fuso orario di tutti i timestamp di compleanno a Europa/Londra come segue:
> Seleziona Nome, Birth_Timestamp, convert_tz (BIVY_TIMESTAMP, @@ time_zone,Come puoi vedere, i fusi orari di compleanno vengono convertiti correttamente.
Quindi, è fondamentalmente come lavori con i fusi orari MySQL/MariaDB. Grazie per aver letto questo articolo.