11

MySQL データベースにDATETIMEの値を持つ型の列があります。2012-05-07 19:59:12UTCタイムゾーンで保存されていると仮定して、DBからこの値を取得しようとしています:

Calendar cal = Calendar.getInstance(new SimpleTimeZone(0, "UTC"));
Date date = resultSet.getTimestamp(1, cal);
System.out.println(date);

それは出力します(CESTUTCより2時間進んでいる私のローカルタイムゾーンです):

Mon May 07 23:59:12 CEST 2012

期待値は次のとおりです。

Mon May 07 21:59:12 CEST 2012

JDBC URL で次の 3 つのパラメーターを使用しています (Europe/Berlinは と同じですCEST)。

..&useGmtMillisForDatetimes=true&useTimezone=true&serverTimezone=Europe/Berlin

それは私の欠陥ですか、それとも JDBC ドライバーで何かを追加で構成する必要がありますか? を使用してmysql:mysql-connector-java:5.1.20います。

4

1 に答える 1

14

これらのJDBC URL パラメーターを使用すると、次のように機能します。

useGmtMillisForDatetimes=true
useJDBCCompliantTimezoneShift=true
useLegacyDate‌timeCode=false
useTimezone=true
serverTimezone=UTC
于 2012-05-08T09:38:26.660 に答える