从Java / Jdbc执行trunc(sysdate)时,Resultset为空

时间:2014-03-10 09:59:32

标签: java jdbc oracle11g

我遇到了使用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

1 个答案:

答案 0 :(得分:0)

我认为你的问题是你想在日期检查的两端运行trunc。像这样:

String sql ="SELECT CODE FROM TESTTABLE WHERE  TRUNC(PROCESS_DT) = TRUNC(SYSDATE)";

否则,只有当PROCESS_DT与TRUNC(SYSDATE)完全匹配时,查询才会返回。另一种可能性是您的代码连接到与sqldeveloper不同的数据库。