java.sql.Timestamp到具有微秒精度的String

时间:2013-12-23 17:37:47

标签: java sql timestamp

我正在将数据库中的timestamp列读入java.sql.Timestamp对象。然后我想将时间戳的值转换为String对象,但保持微秒精度。调用toString()方法让我接近,但它似乎在微秒内失去尾随零。如果时间戳以非零数字结尾,一切都很好。

样品:

SimpleDateFormat outDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS");
String s = "2005-02-25 11:50:11.579410";
java.sql.Timestamp ts = java.sql.Timestamp.valueOf(s);
String out = ts.toString(); // This returns 2005-02-25 11:50:11.57941
out = outDateFormat.format(ts); // This returns 2005-02-25 11:50:11.000579

我真的很想打印2005-02-25 11:50:11.579410。

1 个答案:

答案 0 :(得分:4)

您可以使用getNanos() - Timestamp方法。

SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.");
String s = "2005-02-25 11:50:11.579410";
java.sql.Timestamp ts = java.sql.Timestamp.valueOf(s);
int microFraction = ts.getNanos() / 1000;

StringBuilder sb = new StringBuilder(fmt.format(ts));
String tail = String.valueOf(microFraction);
for (int i = 0; i < 6 - tail.length(); i++) {
    sb.append('0');
}
sb.append(tail);
System.out.println(sb.toString());