Ik dacht dat dit misschien handig zou zijn:
Er zijn drie plaatsen waar de tijdzone kan worden ingesteld in MySQL:
In het bestand "my.cnf" in de [mysqld] sectie
default-time-zone='+00:00'
@@global.time_zone variabele
Om te zien op welke waarde ze zijn ingesteld:
SELECT @@global.time_zone;
Gebruik een van beide om er een waarde voor in te stellen:
SET GLOBAL time_zone = '+8:00';
SET GLOBAL time_zone = 'Europe/Helsinki';
SET @@global.time_zone = '+00:00';
(Het gebruik van benoemde tijdzones zoals 'Europa/Helsinki' betekent dat u een correct ingevulde tijdzonetabel moet hebben.)
Houd er rekening mee dat +02:00
is een tegenprestatie. Europe/Berlin
is een tijdzone (met twee verschuivingen) en CEST
is een kloktijd die overeenkomt met een specifieke offset.
@@session.time_zone variabele
SELECT @@session.time_zone;
Gebruik een van beide om het in te stellen:
SET time_zone = 'Europe/Helsinki';
SET time_zone = "+00:00";
SET @@session.time_zone = "+00:00";
Beide kunnen SYSTEM retourneren, wat betekent dat ze de tijdzone gebruiken die is ingesteld in my.cnf.
Om tijdzonenamen te laten werken, moet u uw tijdzone-informatietabellen instellen die moeten worden ingevuld:http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html . Ik vermeld ook hoe je die tabellen kunt vullen in dit antwoord .
Om de huidige tijdzone-offset te krijgen als TIME
SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);
Het zal 02:00:00 terugkeren als uw tijdzone +2:00 is.
Om de huidige UNIX-tijdstempel te krijgen:
SELECT UNIX_TIMESTAMP();
SELECT UNIX_TIMESTAMP(NOW());
Om de tijdstempelkolom als UNIX-tijdstempel te krijgen
SELECT UNIX_TIMESTAMP(`timestamp`) FROM `table_name`
Om een UTC datetime-kolom als UNIX-tijdstempel te krijgen
SELECT UNIX_TIMESTAMP(CONVERT_TZ(`utc_datetime`, '+00:00', @@session.time_zone)) FROM `table_name`
Opmerking:het wijzigen van de tijdzone zal de opgeslagen datum- of tijdstempel niet wijzigen , maar er wordt een andere datum/tijd weergegeven voor bestaande tijdstempelkolommen, aangezien deze intern worden opgeslagen als UTC-tijdstempels en extern worden weergegeven in de huidige MySQL-tijdzone.
Ik heb hier een cheatsheet gemaakt:Moet MySQL de tijdzone hebben ingesteld op UTC?