2017-02-28 6 views
0

これを行う方法の1つは次のとおりです。JDBCのタイムゾーンをクエリベースで設定するにはどうすればよいですか?

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

ただし、JVM全体に影響します。安全で、特定のタイムゾーンを想定していたアプリケーションまたはJVMの残りの部分に影響を与えないクエリベースでこれを行う方法はありますか?

+0

関連:http://stackoverflow.com/questions/14070572/is-java-sql-timestamp-timezone-specific 'Calendar'オブジェクトのみタイムゾーンについて(または少なくとも使用されること –

答えて

2

Timestampの値を設定/取得するときのタイムゾーンを指定します。 Calendarオブジェクトで

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

、ドライバはカスタムタイムゾーンを考慮してタイムスタンプを計算することができます。 Calendarオブジェクトが指定されていない場合、ドライバはアプリケーションを実行している仮想マシンのデフォルトのタイムゾーンを使用します。

ResultSet.getTimestamp(String columnLabel, Calendar cal)

この方法は、基礎となるデータベースがタイムゾーン情報を格納していない場合、タイムスタンプのために適切なミリ秒の値を構築するために指定されたカレンダを使用します。

両方がカレンダーのタイムゾーンを使用:

Calendar.getInstance(TimeZone zone)

は、指定されたタイムゾーンとデフォルトのロケールを使用してカレンダを取得します。

Calendar.setTimeZone(TimeZone value)

指定されたタイムゾーン値を使用してタイムゾーンを設定します。

+0

注意、これはJDBC要件の意図です)。 –

関連する問題