Timestampの文字列など、マイクロ秒あるいはナノ秒単位まである場合、そのままSimpleDateFormatを利用してDate型に変換すると間違った値になる可能性がある。
書式として「yyyy-MM-dd HH:mm:ss.SSS」を使用するとする。

Timestamp ts = new Timestamp(System.currentTimeMillis());
ts.setNanos(123456789);
String tsExp = ts.toString(); //2014-02-21 15:33:15.123456789
Date dt;
// ここで秒未満が9桁あるからといって「S」を9個並べると、ナノ秒がミリ秒として解釈されてしまう。
// dt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSSSSS").parse(tsExp);

// SimpleDateFormatのSはミリ秒のため、3個までしか並べられない。
// またtsExpのナノ秒をミリ秒までに縮める必要がある。
String format = "yyyy-MM-dd HH:mm:ss.SSS";
tsExp = tsExp.substring(0, format.length());
dt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").parse(tsExp);