【发布时间】:2015-07-17 13:20:00
【问题描述】:
我正在尝试使用 java 从我的 postgresql 数据库中获取列的平均值。 这是查询:
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 秒。
这里是sn-p的代码:
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 一起使用
【问题讨论】:
-
能否贴出JDBC在服务器上执行的实际查询。
-
@RomanC 我怎样才能找到那个?
-
如果你打印语句代码,那是已经准备好的或者使用了一些 JDBC 日志工具。
-
我在问题中发布的查询是我打印
ps对象时得到的查询。 -
为什么要将数字转换为 varchar?如果没有行满足
where条件,avg()将返回 null。select count(*) 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'返回什么?
标签: java postgresql select jdbc average