【发布时间】:2018-07-13 01:44:51
【问题描述】:
我正在通过控制台在 psql 中执行以下查询并获取输出:
select details
from history_transactions
,history_operations
where history_operations.transaction_id = history_transactions.id
and type = 3
and created_at >= NOW() - INTERVAL '5 minutes'
但是,当我从我的 java 程序中调用此代码时,它没有返回任何输出。 ResultSet 是 null。 PFB 我的代码:
Connection conn = getConnection();
java.sql.Statement stmt = null;
String sql ="select details from history_transactions , history_operations where history_operations.transaction_id=history_transactions.id and type =3 and created_at >= NOW() - INTERVAL '5 minutes'";
try{
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next()) {
System.out.println("Inside resultset");
}
}
catch(Exception e)
{
e.printStackTrace();
}
知道我哪里出错了吗?
我也没有遇到任何异常。
注意:如果我将时间间隔从 5 分钟更改为 6 小时或更长时间,则它正在工作并给我输出。如果我更改间隔
我正在使用 java 版本“1.8.0_151”和 PostgreSQL JDBC 4.2 驱动程序,42.2.1 - 根据https://jdbc.postgresql.org/download.html - 它是合适的驱动程序。
【问题讨论】:
-
你的查询是否真的返回了一些东西?
-
即使查询没有返回任何内容,
ResultSet也不会为空 -
是的,我的查询返回多行。
-
事实上 rs.isBeforeFirst() && rs.isAfterLast() 返回错误。我相信这意味着结果集有行?
-
@sweta - 您是否连接到在与本地时区不同的时区运行的 PostgreSQL 服务器?如果是这样,那么
NOW()可能代表不同的(时区调整的)yyyy-mm-dd ...值,如果您的created_at列不支持时区,则查询可能会产生不同的结果。
标签: java postgresql jdbc psql