I denne artikkelen skal jeg vise deg hvordan du installerer tidssonedatabaser til MySQL og MariaDB -databaseserveren og bruker den. Jeg har testet trinnene som er vist i denne artikkelen på Centos 8 og Ubuntu 18.04 LTS. Men det skal fungere på Centos/Rhel 7+, Ubuntu 18.04+ og Debian 10+. Så la oss komme i gang.
Forutsetninger:
Du må ha MySQL eller MariaDB installert på Linux OS (i.e. Centos/RHEL, Ubuntu/Debian). Hvis du trenger hjelp til å installere MySQL/MariaDB, er det mange artikler om Linuxhint.com som du kan sjekke.
Installere tidssonedata på CentOS/RHEL:
I centos/rhel, tzdata Pakken gir tidssoneinformasjon. De tzdata Pakken skal installeres som standard.
Hvis det i alle fall ikke er installert, kan du installere den med følgende kommandoer:
$ sudo dnf makecache
$ sudo dnf installer tzdata
MERK: På centos/rhel 7, bruk yum i stedet for dnf.
Installere tidssonedata på Ubuntu/Debian:
I Ubuntu/Debian, den tzdata Pakken gir tidssoneinformasjon. De tzdata Pakken skal installeres som standard.
Hvis det i alle fall ikke er installert, kan du installere den med følgende kommandoer:
$ sudo apt oppdatering
$ sudo apt installer tzdata
Konvertere tidssonedata til SQL:
Tidssonedataene skal være i /usr/share/soneinfo/ Directory of Centos/RHEL, og Ubuntu/Debian OS.
$ ls/usr/share/soneinfo/
Som du ser, er tidssonedataene pent ordnet i forskjellige mapper.
Tidssonedatafilene er binære. Du kan ikke bruke dem direkte med MySQL/MariaDB -databaser.
$ katt/usr/share/soneinfo/America/Toronto
Du må konvertere de binære tidssonedataene (fra /usr/share/soneinfo/ katalog) til SQL ved å bruke mysql_tzinfo_to_sql program.
For å konvertere tidssonedataene til SQL, Kjør mysql_tzinfo_to_sql følgende:
$ mysql_tzinfo_to_sql/usr/share/soneinfo/> ~/soneinfo.SQLEn ny fil soneinfo.SQL bør opprettes i hjemmekatalogen din. Du kan importere tidssoneinformasjonen til MySQL/MariaDB -databasen fra denne filen.
Importere tidssonedata til MySQL/MariaDB:
Du kan importere tidssoneinformasjonen fra soneinfo.SQL fil inn i mysql Database som følger:
$ katt ~/soneinfo.SQL | sudo mysql -u root mysql -pNå, skriv inn MySQL/MariaDB -databasen ROOT -passordet og trykk . Tidssoneinformasjonen skal importeres.
Angi standard/global tidssone i MySQL/MariaDB:
Som standard er standard/global tidssone for MySQL/MariaDB satt til OS -tidssonen. Du kan angi en annen standard/global tidssone hvis du vil.
> Velg @@ time_zone;Først må du finne tidssonenavnet du vil angi. Du kan finne alle tilgjengelige tidssonenavn med følgende SQL -setning:
> Velg navn fra MySQL.TIME_ZONE_NAME;Du kan også søke etter ønsket tidssonenavn som følger:
> Velg navn fra MySQL.TIME_ZONE_NAME HVOR Navn som '%%';Nå kan du angi ønsket tidssone som standard/global tidssone som følger:
> Sett global time_zone = "";Din ønskede tidssone skal settes som standard/global tidssone.
> Velg @@ time_zone;De Convert_tz () Funksjon brukes til å konvertere tidssonen til en datetime i MySQL/MariaDB.
Syntaksen til Convert_tz () funksjon er:
Convert_tz (DateTime, From_tz, to_tz)Her, fra_tz og TO_TZ kan være et tidssonenavn (i.e. Asia/Dhaka, America/New_York), eller tidssonforskyvning (i.e. +06:00, -02: 00).
De dato tid konverteres fra fra_tz til TO_TZ tidssone.
Du kan skrive ut gjeldende tidsstempel (gjeldende dato og klokkeslett) på datamaskinen med følgende SQL -setning:
> Velg Current_Timestamp ();La oss si, du vil konvertere tidssonen for gjeldende dato og klokkeslett for datamaskinen din til Europa/London. For å gjøre det, kan du kjøre Convert_tz () funksjon som følger:
> Velg Current_Timestamp () som dt_dhaka, convert_tz (current_timestamp (),Som du ser, blir tidssonen for den nåværende datetiden konvertert til Europa/London vellykket.
Du kan også konvertere tidssone for spesifikk datetime som følger:
> Sett @dt = '2001-01-03 11:02:11';Du kan også konvertere tidssonen for datetimefeltene i en tabell. For demonstrasjon vil jeg bruke et enkelt bursdagsbord i denne artikkelen.
Først må du lage en fødselsdag Tabell som følger:
> Lag bord bursdag (navn varchar (20) ikke null,De fødselsdag Tabellen har bare 2 felt, Navn og Birth_timestamp Som du kan se på skjermbildet nedenfor.
> Beskriv bursdag;Nå, sett inn noen dummy bursdagsdata i fødselsdag Tabell som følger:
> Sett inn bursdagsverdier ('Bob', '1997-10-11 12:11:11'),Her er dummy bursdagsdata.
> Velg * fra bursdag;Nå kan du konvertere tidssonen til alle bursdagstidsstempene til Europa/London følgende:
> Velg Navn, Birth_Timestamp, Convert_tz (Birth_Timestamp, @@ time_zone,Som du kan se, blir bursdagssonene konvertert riktig.
Så det er i utgangspunktet hvordan du jobber med MySQL/MariaDB tidssoner. Takk for at du leste denne artikkelen.