Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PreparedStatement.setDate(),查询不返回结果_Java_Sql_Oracle_Date_Prepared Statement - Fatal编程技术网

Java PreparedStatement.setDate(),查询不返回结果

Java PreparedStatement.setDate(),查询不返回结果,java,sql,oracle,date,prepared-statement,Java,Sql,Oracle,Date,Prepared Statement,我尝试使用PreparedStatement.setDate方法将日期对象输入到Oracle Db上运行的SQL查询中。 问题是无论我为日期选择什么参数,结果总是空的 SQL查询: Select (TO_CHAR(transaction_date, 'YYYY,MM,DD')) transaction_date_graph, \ (TO_CHAR(transaction_date, 'DD MON YYYY')) transaction_date_view, \ sum(trans_amount

我尝试使用PreparedStatement.setDate方法将日期对象输入到Oracle Db上运行的SQL查询中。 问题是无论我为日期选择什么参数,结果总是空的

SQL查询:

Select (TO_CHAR(transaction_date, 'YYYY,MM,DD')) transaction_date_graph, \
(TO_CHAR(transaction_date, 'DD MON YYYY')) transaction_date_view, \
sum(trans_amount) amount from ar_customer_balance_itf \
where transaction_date>=? and transaction_date<=? \
group by transaction_date ORDER BY transaction_date
选择(至字符(交易日期,'YYYY,MM,DD'))交易日期图\
(至字符(交易日期,'DD MON YYYY'))交易日期视图\
应收账款客户余额itf的总额(交易金额)\

其中交易日>=?和transaction_dateOracle日期列只记录到第二个,而在Java中它们有毫秒。当您用Java创建日期时,它们是第二个日期。我建议将其简化为一个小示例,这样您就可以进行调试了。尝试以下操作:a)硬编码日期,b)删除I used toDate函数,并用以下
选择(TO_CHAR(transaction_date,'YYYY,MM,DD'))transaction_date图,(TO_CHAR(transaction_date,'yyyyy-MM-D'))transaction_date视图,sum(trans amount)amount from ar_customer_balance_itf,其中transaction_date>=TO_date('01/01/2001'、'DD/mm/YYYY'和交易日期<截止日期('03/10/2013'、'DD/mm/YYYY')按交易日期分组,按交易日期排序
,工作正常。
public List<Map<String, String>> queryData(String query) {

List<Date> dates = analyseDate(query);
ResultSet rs = null;
ResultSetMetaData rsmd;
int count = 0;
List<Map<String, String>> propertyList = new LinkedList<Map<String, String>>();
try {
    if (dates.size()==2) // If there are two dates in the query
    {   
        stmt_dateRange.setDate(1, dates.get(0));
        stmt_dateRange.setDate(2, dates.get(1));
        rs = stmt_dateRange.executeQuery();
        System.out.println("Executed query.");
    } else if (dates.size()==1) // If there is only one date
    {   
        stmt_dateStart.setDate(1, dates.get(0));
        rs = stmt_dateStart.executeQuery();
        System.out.println("Executed query.");
    }

    rsmd = rs.getMetaData();
    while (rs.next()) {
        Map<String, String> fieldMap = new HashMap<String, String>();
        for (int i = 1; i <= rsmd.getColumnCount(); i++) {
            if (rs.getString(i) == null)
                break;
            fieldMap.put(rsmd.getColumnLabel(i).toLowerCase(),
                    rs.getString(i));
        }
        propertyList.add(fieldMap);
        count++;
    }

} catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
System.out.println("Query result: " + count + " rows");
return propertyList;