簡體   English   中英

數據庫中的時區錯誤

[英]Timezone is wrong in database

我已經在phpmyadmin中使用CURRENT_TIMESTAMP函數進行了約會。 並且小時的輸出值錯誤了1小時。 我試圖使用SET TIME_ZONE = '+01:00';在mysql中更改它SET TIME_ZONE = '+01:00';

但是,它將仍然在1小時前提交日期。 有什么建議么?

您正在涉及一個復雜的話題。

當表的某列具有TIMESTAMP數據類型時,所有值都將從當前的time_zone設置轉換為UTC 存儲在UTC中。 當您從這些列中檢索值時,它們將轉換回當前的time_zone 這很方便,因為您可以通過將time_zone視為用戶首選項,在全球范圍time_zone本地用戶顯示日期time_zone

當列具有DATETIME數據類型時, 不會發生轉換。

這是一個例子:

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 */

專家提示:如果您使用命名時區Europe/Paris ,則將自動從所選區域設置的夏令時規則中受益。 IANA維護的規則(稱為zoneinfo數據庫) 許多Linux發行版在其定期更新中包括對zoneinfo數據庫的更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM