2017-02-28 33 views
0

執行此操作的一種方法如下。如何在查詢的基礎上設置JDBC的時區?

TimeZone.setDefault(TimeZone.getTimeZone("yourTimeZone")); 

但是,它會影響整個JVM。有沒有辦法在查詢的基礎上做到這一點是安全的,並且不會影響其他應用程序或可能假定具體時區的JVM?

+0

相關:http://stackoverflow.com/questions/14070572/is-java-sql-timestamp-timezone-specific –

回答

2

指定設置/獲取Timestamp值時所需的時區。

PreparedStatement.setTimestamp(int parameterIndex, Timestamp x, Calendar cal)

利用Calendar對象,驅動程序可以計算時間戳考慮自定義時區。如果沒有指定Calendar對象,則驅動程序將使用默認時區,該時區是運行應用程序的虛擬機的時區。

ResultSet.getTimestamp(String columnLabel, Calendar cal)

此方法使用給定日曆構造一個適當毫秒值的時間戳,如果底層數據庫未存儲時區信息。

兩者都使用日曆的時區:

Calendar.getInstance(TimeZone zone)

使用指定時區和默認語言環境獲得一個日曆。

Calendar.setTimeZone(TimeZone value)

用給定的時區值的時區。

+0

請注意,「日曆」對象僅用於時區信息(或至少,這就是JDBC要求的意圖)。 –

相關問題