• 締切済み

MySQL TIMESTAMP型をJavaで取得

MySQL TIMESTAMP型をJavaで取得すると、秒の部分に小数点が勝手に加えられるのですがそういうものなのでしょうか。 MySQLの値と矛盾しているように思うのですが、お教えください。 (1) MySQLで表示  mysql > select * from ~; +-------+---------------------+ | title | renew_date | +-------+---------------------+ | test | 2014-03-23 21:09:57 | +-------+---------------------+ (2) Javaで表示 … ResultSet rs = stmt.executeQuery("SELECT * FROM ~); while(rs.next()) {   renew_date = rs.getString("renew_date");     } System.out.println("renew_date: " + renew_date); このSystem.out.printlnでは、 +-------+---------------------+ renew_date: 2014-03-23 21:09:57.0 +-------+---------------------+ と出ます。 (1)と(2)にで小数点(最後の秒の部分、 .0 )が異なります。

みんなの回答

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

mysqlコマンドでの結果はあくまでmysqlコマンドがDBから引っ張ってきた値を画面出力用に整形したものだ。 で、rs.getStringもDBからとってきた日付値を独自の手法(多分普通にtoString()しているだけ)で文字列に変換しているのだろう。 得られた文字列の差はここで生まれると考えられる。 rs.getString(String)じゃなくってrs.getDate(String, Calendar)、rs.getTime(String, Calendar)、rs.getTimestamp(String, Calendar)を使って純粋な日付の値として取得するのが良いのではないかな。多分得られるのがlong値なので取得した値をCalendarでjava.util.Dateに直すという事になるだろう。