こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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 )が異なります。

投稿日時 - 2014-03-23 21:41:31

QNo.8526027

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

11人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.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に直すという事になるだろう。

投稿日時 - 2014-03-30 00:22:05

あなたにオススメの質問