sql >> Databasteknik >  >> RDS >> Mysql

Hur ställer jag in tidszonen för MySQL?

Jag tänkte att det här kan vara användbart:

Det finns tre platser där tidszonen kan ställas in i MySQL:

I filen "my.cnf" i avsnittet [mysqld]

default-time-zone='+00:00'

@@global.time_zone variabel

För att se vilket värde de är inställda på:

SELECT @@global.time_zone;

För att ställa in ett värde för det, använd endera:

SET GLOBAL time_zone = '+8:00';
SET GLOBAL time_zone = 'Europe/Helsinki';
SET @@global.time_zone = '+00:00';

(Att använda namngivna tidszoner som "Europa/Helsingfors" innebär att du måste ha en tidszonstabell korrekt ifylld.)

Tänk på att +02:00 är en offset. Europe/Berlin är en tidszon (som har två förskjutningar) och CEST är en klocktid som motsvarar en specifik offset.

@@session.time_zone variabel

SELECT @@session.time_zone;

För att ställa in det, använd endera:

SET time_zone = 'Europe/Helsinki';
SET time_zone = "+00:00";
SET @@session.time_zone = "+00:00";

Båda kan returnera SYSTEM vilket innebär att de använder tidszonen som är inställd i my.cnf.

För att tidszonsnamn ska fungera måste du ställa in dina tidszonsinformationstabeller måste fyllas i:http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html . Jag nämner också hur man fyller i dessa tabeller i det här svaret .

För att få aktuell tidszon förskjuten som TIME

SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);

Den kommer tillbaka 02:00:00 om din tidszon är +2:00.

För att få den aktuella UNIX-tidsstämpeln:

SELECT UNIX_TIMESTAMP();
SELECT UNIX_TIMESTAMP(NOW());

För att få tidstämpelkolumnen som en UNIX-tidsstämpel

SELECT UNIX_TIMESTAMP(`timestamp`) FROM `table_name`

För att få en UTC-datumtidkolumn som en UNIX-tidsstämpel

SELECT UNIX_TIMESTAMP(CONVERT_TZ(`utc_datetime`, '+00:00', @@session.time_zone)) FROM `table_name`

Obs! Ändring av tidszon kommer inte att ändra lagrad datumtid eller tidsstämpel , men det kommer att visa en annan datumtid för befintliga tidsstämpelkolumner eftersom de lagras internt som UTC-tidsstämplar och visas externt i den aktuella MySQL-tidszonen.

Jag gjorde ett cheatsheet här:Ska MySQL ha sin tidszon inställd på UTC?



  1. initiera en sqlite databas android

  2. Använd Räkna för att hitta antalet förekomster

  3. Topp n procent topp n%

  4. PDB Koppla bort ORA-17528 Fel