2017-02-27 8 views
0

クライアントシステムと異なるタイムゾーンを持つ別のサーバからデータを読み込むためにPostgreSQL JDBCを使用しています。PostgreSQL JDBCがタイムゾーンでデータを読み取る

データの読み込みには日付型の列がいくつかあります。私はこれらの列がクライアントシステムのタイムゾーンになるようにして、それを行うために、サーバーのタイムゾーンが何であるかをJDBCに伝える方法があるはずだと思います。

私はpypsarkでJDBCを使用しています。

助けが必要ですか?ありがとう。

答えて

0

timestamptzデータは、取得時に自動的にJavaのデフォルトのタイムゾーンに変換されます。

java.util.TimeZone.setDefault(java.util.TimeZone)でこのデフォルト値を変更できます。それはかなり侵襲的であり、全体JVM用のタイムゾーンを設定しているので、私は特定の時間帯にタイムスタンプをフォーマットする方法を紹介します

java.sql.ResultSet rs = stmt.executeQuery(); 
rs.next(); 
// fetch the first result column as java.sql.Timestamp object 
java.sql.Timestamp d = rs.getObject(1, java.sql.Timestamp.class); 
// create a calendar with the appropriate time zone 
java.util.Calendar cal = java.util.Calendar.getInstance(
     java.util.TimeZone.getTimeZone("Asia/Kolkata")); 
// create a DateFormat with the appropriate format and locale 
java.text.DateFormat df = java.text.DateFormat.getDateTimeInstance(
     java.text.DateFormat.MEDIUM, 
     java.text.DateFormat.MEDIUM, 
     java.util.Locale.ENGLISH); 
// tell the DateFormat to use the calendar with the right time zone 
df.setCalendar(cal); 
// output will be in the chosen time zone 
System.out.println("timestamp = " + df.format(d)); 
+1

TimeZone.setDefault'はないかもしれない '使い方あなたのアプリケーションの他の部分を壊す可能性があります。 –

+0

これらの列はクライアントシステムのタイムゾーン*になるように質問され、その設定方法は不思議です。しかし、データを特定の時間帯に変換する方法についての情報を追加できます。 –

関連する問題