データベースからタイムスタンプ値をフェッチし、それらをカレンダーに変換して、タイムスタンプに戻そうとしていますが、精度が失われます。
問題を再現するためのコードは次のとおりです
import java.sql.Timestamp;
import java.util.Calendar;
public class Test {
public static void main(String[] args)
{
Timestamp timestamp = new Timestamp(112, 10, 5, 15, 39, 11, 801000000);
System.out.println("BEFORE "+timestamp.toString());
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timestamp.getTime());
timestamp = new Timestamp(calendar.getTimeInMillis());
System.out.println("AFTER "+timestamp.toString());
}
}
これが変換のサンプル結果です
BEFORE 2012-10-18 14:30:13.362001
AFTER 2012-10-18 14:30:13.362
精度が低下します。10進値をそのまま維持するにはどうすればよいですか?