简体   繁体   中英

Timezone is wrong in database

I have made a date with the CURRENT_TIMESTAMP function in phpmyadmin. And the output value of the hours is wrong by 1hour. I have tried changing it in mysql using the SET TIME_ZONE = '+01:00';

However it will still submit the date with 1 hour earlier. Any suggestions?

You're touching a complex topic.

When a column of a table has the TIMESTAMP data type, all values are stored in UTC after translating from your current time_zone setting to UTC. When you retrieve values from those columns they are translated back to your current time_zone . This is handy because you can present datestamps to users globally in their own local time by treating the time_zone as a user preference.

When a column has the DATETIME data type, the translations do not occur .

Here's an example:

CREATE TABLE t1 (
  ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);


SET time_zone = 'UTC';
INSERT INTO t1 (ts, dt) VALUES (NOW(), NOW());
SET time_zone = 'Europe/Paris';
INSERT INTO t1 (ts, dt) VALUES (NOW(), NOW());


SET time_zone = 'UTC';
SELECT  * FROM t1;    /* notice differences presentation of ts columns, ds stay the same */
SET time_zone = 'Europe/Paris';
SELECT  * FROM t1;    /* again */
SET time_zone = 'America/Halifax';
SELECT  * FROM t1;    /* again */

Pro tip: If you use named time zones Europe/Paris you'll automatically get the benefit of the daylight time rules for the locale you chose. The rules, known as the zoneinfo database , are maintained by IANA . Many Linux distributions include changes to the zoneinfo database in their regular updates.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM