[英]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.