2015-05-28 50 views
1

我看到什麼在我看來,從MySQL DATETIME意外的行爲,當我試圖從我的Java應用程序將值插入我的表。我已經閱讀了很多關於DATETIME的StackOverflow問題和答案,但這似乎是一個完全不同的問題。意外的MySQL DATETIME行爲

我的Java應用程序使用的MyBatis和this DateTimeTypeHandler插入喬達DateTime值2015-03-04T22:30:59.922Z。 (我也修改了上面的代碼來使用setTimestamp(int,Timestamp,Calendar)方法,但沒有注意到結果的差異)。

我所看到的被插入到表是價值2015-03-04 14:30:59.922。我讀過MySQL DATETIME使用服務器默認時區。我住在PDT時區,所以我期望的值是2015-03-04 15:30:59.922(這是15:30,而不是14:30)。

讓人吃驚的是沒有在MySQL似乎預示着PDT時區。那麼爲什麼我的日期時間值會在2015-03-04 14:30:59.922?

mysql> select @@global.time_zone; +--------------------+ | @@global.time_zone | +--------------------+ | UTC | +--------------------+ 1 row in set (0.06 sec)

mysql> select @@session.time_zone; +---------------------+ | @@session.time_zone | +---------------------+ | UTC | +---------------------+ 1 row in set (0.07 sec)

mysql> SELECT @@system_time_zone; +--------------------+ | @@system_time_zone | +--------------------+ | UTC | +--------------------+ 1 row in set (0.07 sec)

回答

1

2015年3月4日爲標準時間,以便該偏移是-8小時:

UTC (Time Zone)     Wednesday, March 4, 2015 at 10:30:00 PM  UTC   
Los Angeles (U.S.A. - California) Wednesday, March 4, 2015 at 2:30:00 PM PST UTC-8 hours 

今天(2015年5月28日)是日光時間,以便該偏移是-7小時:

UTC (Time Zone)     Thursday, May 28, 2015 at 10:30:00 PM  UTC   
Los Angeles (U.S.A. - California) Thursday, May 28, 2015 at 3:30:00 PM PDT UTC-7 hours 
+0

哦,我明白了。謝謝。但是,當全局和會話和系統時區設置爲UTC時,我仍然不明白爲什麼它使用UTC-8。如何查看DATETIME使用的時區,以及是否有某種方法可以覆蓋它? – Shobit