2013-04-29 58 views

回答

0

時區轉換由底層JDBC驅動程序(而不是Hibernate)完成。通過這種方式,服務器時區對應用程序是隱藏的。據我所知,沒有「官方」方式來讀取服務器時區。

在Oracle數據庫可以用

SELECT DBTIMEZONE FROM dual; 

對於MySQL讀取服務器時區你做

SELECT @@global.time_zone, @@session.time_zone; 

但正如你可以看到這並不適用於所有數據庫。

您可以在JDBC連接字符串(在您的hibernate.cfg.xml中)中配置數據庫時區,但這更依賴於數據庫。

另一個解決方法是定義一個系統屬性,它已指定與-Dserver-timezone=...和在應用程序中啓動應用程序時,你可以通過

String tz = System.getProperty("server-timezone"); 

讀它以這種方式適用於所有的數據庫,但你必須在啓動腳本中指定它。