使用时间戳的准备好的语句需要更多纳秒

Prepared statement using Timestamp needs more nanoseconds

我正在使用以下语句从我的 SQL 数据库中获取时间戳:

stmt.setTimestamp(i++, new java.sql.Timestamp(example.getExampleDate().getTime()))

哪个工作得很好 returns:

2013-02-22 12:27:34.0 

现在正好需要更精确一点,像这样:

2013-02-22 12:27:34.000

所以我在文档中找到了以下方法,这显然正是我想要的:

setNanos(int n)

Sets this Timestamp object's nanos field to the given value.

但我需要弄清楚如何将其包含到我准备好的声明中?

例如我试过

stmt.setTimestamp(i++, new java.sql.Timestamp(example.getExampleDate().getTime()).setNanos(3));

但比 returns 出现以下错误:

The method setTimestamp(int, Timestamp) in the type PreparedStatement is not applicable for the arguments (int, void)

非常感谢您的帮助!

setNanos() returns无效。所以表达式 new java.sql.Timestamp(example.getExampleDate().getTime()).setNanos(3) 是 void 类型。您不能将 void 传递给方法 setTimestamp()。您必须传递时间戳。

所以使用一个变量:

Timestamp timestamp = new Timestamp(example.getExampleDate().getTime());
timestamp.setNanos(3);
stmt.setTimestamp(i++, timestamp);