TIMESTAMP值始終保存爲UTC。
MySQL將TIMESTAMP從當前時區轉換爲UTC存儲並從UTC返回到當前時區以供檢索。
默認時區是服務器時區,可以在連接上設置。見this。
欲瞭解更多詳情,請參閱MySQL Doc
我可以通過一個例子來說明這一點。請執行在MySQL控制檯中的查詢:
mysql> CREATE TABLE `testtable` (
`date_timestamp` TIMESTAMP NOT NULL,
`date_datetime` DATETIME NOT NULL
)
ENGINE = InnoDB;
Query OK, 0 rows affected (0.06 sec)
mysql> SET time_zone = '+00:00';
Query OK, 0 rows affected (0.00 sec)
mysql> insert into testtable values(now(),now());
Query OK, 1 row affected (0.03 sec)
mysql> select * from testtable;
+---------------------+---------------------+
| date_timestamp | date_datetime |
+---------------------+---------------------+
| 2012-10-19 05:01:38 | 2012-10-19 05:01:38 |
+---------------------+---------------------+
1 row in set (0.00 sec)
mysql> SET time_zone = '+05:30';
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> insert into testtable values(now(),now());
Query OK, 1 row affected (0.03 sec)
mysql> select * from testtable;
+---------------------+---------------------+
| date_timestamp | date_datetime |
+---------------------+---------------------+
| 2012-10-19 10:31:38 | 2012-10-19 05:01:38 |
| 2012-10-19 10:31:47 | 2012-10-19 10:31:47 |
+---------------------+---------------------+
2 rows in set (0.00 sec)
嗯所以你說,無論我給的時間戳值,MySQL將它轉換爲UTC。做了一些測試,似乎並非如此。我是否需要做一些類似'SET time_zone ='+00:00';' – arvinsim
編輯我原來的帖子以供測試和結果。 – arvinsim
你可以檢查我的例子。當您查詢數據庫時,時區將是您的系統時區,並自動轉換UTC日期。你如果你想查看UTC的日期。你應該用'SET time_zone ='+00:00';'設置時區,如果你想看到UTC的日期爲 – Khaleel