我遇到了使用Oracle的trunc(sysdate)从jdbc运行查询的问题。 我能够从代码连接到数据库并执行简单查询以进行测试。 以下是我尝试过的查询,而且两者似乎都没有返回任何内容。
//String sql ="SELECT CODE FROM TESTTABLE WHERE TO_CHAR(PROCESS_DT,'MM/DD/YYYY') = (SELECT TO_CHAR(SYSDATE,'MM/DD/YYYY') FROM DUAL)";
String sql ="SELECT PROCESS_DT,CODE FROM TESTTABLE WHERE PROCESS_DT = TRUNC(SYSDATE)";
//creating PreparedStatement object to execute query
PreparedStatement preStatement = connection.prepareStatement(sql);
ResultSet result = preStatement.executeQuery();
while(result.next()){
String code = result.getString("CODE");
System.out.println("---- code ----" + code);
}
当使用java的jdbc代码运行时,上面的查询不会返回数据库中的任何行。 但是在PL / SQL开发人员中运行相同的操作并从TestTable中返回匹配的行。
修改:已更新
==============================
PROCESS_DT , CODE
11/21/2013 NFS
11/22/2013 NFS
03/10/2014 VPS
PROCESS_DT的数据类型是db中的Date,我想将它与我的代码的当前business / sysdate进行比较。
任何人都可以让我知道问题是什么,我上面做错了什么以及纠正它的方法。 任何帮助都会很棒,因为我在网上找不到这个问题。
由于 Vikeng21
答案 0 :(得分:0)
我认为你的问题是你想在日期检查的两端运行trunc。像这样:
String sql ="SELECT CODE FROM TESTTABLE WHERE TRUNC(PROCESS_DT) = TRUNC(SYSDATE)";
否则,只有当PROCESS_DT与TRUNC(SYSDATE)完全匹配时,查询才会返回。另一种可能性是您的代码连接到与sqldeveloper不同的数据库。