我试图从我的postgresql数据库中使用java获取一列的平均值。下面是查询:
select cast(avg(qtime) as varchar) as average from es_logger where qdate >= '07-JUL-15 10:00:00' and qdate < '07-JUL-15 11:00:00' and ip = 'x.x.x.x'
这个查询在postgresql控制台中执行大约100毫秒,但是在我的java代码中调用时,执行和返回大约需要10秒。
下面是代码片段:
ps = con.prepareStatement(sql);
rs = ps.executeQuery();
rs.next();
String d = rs.getString(1);
而且,这个查询总是在java中返回null
,而它在postgresql控制台上给出一个正确的答案。
我试过从我的代码中运行其他select
查询,它们运行得很好。
谁能帮我解释一下为什么会发生这种情况?
编辑:我使用Java 1.7_51与postgresql 9.2和驱动程序postgresql-9.1-901.jdbc4.jar
终于想明白了。
结果是:
1)响应时间长是数据库问题。同样的查询在不同的postgresql数据库上运行得非常快。
2)空值被返回,因为我传递我的时间戳参数作为一个字符串。只需像这里建议的那样将其作为时间戳传递,它就可以工作了。