我正在尝试从当前日期选择超过7天的行。使用的数据库是DB2版本9。
您能否告诉我如何在查询中使用日期时间?日期表字段的类型为timestamp。
我可以手动运行查询而不会出现问题。但是,当我在准备好的声明中使用时,
应用程序在执行查询结果时挂起= pselect.executeQuery();因此,我们需要重新启动db2实例才能清除它。
你能帮忙解决一下这个问题吗?我没有看到任何例外。如果我删除select_query部分,代码的其他部分工作正常。
try{
String select_query = "SELECT URL_ID ,URLVAL FROM URL_TAB WHERE " +
"UPDATED_DATE < TIMESTAMP(CURRENT_DATE - 7 DAYS, '00.00.00')";
System.out.println("select_query=" + select_query);
conn = JDBCDataObjectFactoryManager
.getConnection("JDBCConnectionFactory-SDE");
pselect = conn.prepareStatement(select_query);
System.out.println("pselect=" + pselect);
try{
System.out.println("inside try");
result = pselect.executeQuery();
System.out.println("result=" + result);
}catch(Exception e){
System.out.println("inside catch");
System.out.println("error message==============>"+e.getMessage());
}
if ((result != null) && (result.next())) {
System.out.println("3 >>>>>>>>>>>>>>>>>>>>>>>>>");
url_id = result.getInt(1);
url = result.getString(2);
}//end if
答案 0 :(得分:1)
有两种可能性:查询处于锁定等待状态,或者运行时间过长,看起来是挂起的。
检查LOCKWAIT数据库配置参数的值是什么 - 默认值为-1,表示无穷大,您通常希望将其设置为更合理的值,通常为30或60秒。如果是导致应用程序“挂起”的锁定等待,则会出现异常,这将有助于您进一步调试。
如果问题是由较差的查询性能引起的,那么您需要与DBA一起找出根本原因并解决它。