0

私のJava:

Date parsedDate = dateFormat.parse(timestamp);
Timestamp dbTimestamp = new Timestamp(parsedDate.getTime());       
insertTimestampPreparedStatement.setTimestamp(3, dbTimestamp);

PhpMyAdmin / MySQLは、私が表示する場合でも、常にこれを現地時間で表示します

insertTimestampPreparedStatement.setTimestamp(3, dbTimestamp, Calendar.instance(TimeZone.getTimeZone("UTC"));

MySQLがタイムゾーンを認識してそれらを保存するかどうかはわかりません。これを確認する唯一の方法は、phpmyadminでタイムゾーン行をNOW()に直接更新することでした。その後、GMTで時刻が表示されました。したがって、phpmyadmin / mysqlにバグがあるか、コードが正しいタイムゾーンでタイムスタンプを送信していません。

これをUTCで機能させるにはどうすればよいですか?

4

1 に答える 1

2

JDBCドライバーは、特定のタイムゾーンのカレンダーが提供されていない限り、タイムスタンプを取得または保存するときにローカルタイムゾーンを使用する必要があります。

残念ながら、JDBC仕様は、ドライバーがどのように動作するかについて常に明確であるとは限らず、MySQLがそれを間違っているように見えます。serverTimeZoneMySQLの場合、接続文字列と関連するプロパティで1つ以上のオプションを指定することにより、使用するタイムゾーンを強制できます。完全なリストについては、http://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.htmlを参照してください。

于 2012-05-12T07:55:48.510 に答える