2012-12-07 61 views
0

我在我的程序下面的SQL語句:Java的SQL語句不給出錯誤沒有一個結果

"SELECT ANTAL_KALD,BESVARET_25_SEK,((BESVARET_25_SEK/nullif(ANTAL_KALD,0))*100) as answer_percent,TIDSPUNKT,QUEUE " 
       +"FROM KS_DRIFT.PERO_NKM_KØ_OVERSIGT WHERE TIDSPUNKT BETWEEN '"+start.getYear()+"-"+start.getMonthOfYear()+"-"+start.getDayOfMonth()+ 
       "' AND '"+end.getYear()+"-"+end.getMonthOfYear()+"-"+end.getDayOfMonth()+ 
       "'"; 

這並不給我任何結果集

測試System.out.println(rs.next())false

然而當我在我的數據庫中寫道如下:

select QUEUE, 
ANTAL_KALD, 
BESVARET_25_SEK, 
((BESVARET_25_SEK/nullif(ANTAL_KALD,0))*100) as answer_percent, 
TIDSPUNKT 
from KS_DRIFT.PERO_NKM_KØ_OVERSIGT Where TIDSPUNKT BETWEEN '2012-12-01' AND '2012-12-02' ORDER BY QUEUE 

我得到了結果..那麼問題是什麼?它沒有給我一個錯誤或任何

+3

發佈您的JDBC代碼,爲什麼你使用簡單的語句,使自己容易SQL注入?使用已準備好的狀態 – PermGenError

+0

您的查詢看起來不一樣 –

+0

我會打印並確保開始和結束都是有效的日期。 – kosa

回答

1

假設startendjava.sql.Date對象(若沒有請轉換),我建議你用PreparedStatementsetDate()設置如下日期:

String sql = "SELECT ANTAL_KALD,BESVARET_25_SEK, "+ 
       " ((BESVARET_25_SEK/nullif(ANTAL_KALD,0))*100) as answer_percent, "+ 
       " TIDSPUNKT,QUEUE " 
       +"FROM KS_DRIFT.PERO_NKM_KØ_OVERSIGT "+ 
       " WHERE TIDSPUNKT BETWEEN ? AND ?"; 
    PreparedStatement qStmt=connection.prepareStatement(sql); 
    qStmt.setDate(1, start); 
    qStmt.setDate(1, end); 


    ResultSet rs = qStmt.executeQuery(); 

編輯:從喬達DateTime對象獲得java.sql.Date,請做以下:

java.sql.Date startDate = new java.sql.Date(start.toDate().getTime()); 
    java.sql.Date endDate = new java.sql.Date(end.toDate().getTime()); 

在查詢中使用這些轉換的對象。

+0

開始和結束是喬達時間我可以通過那些沒有轉換? –

+0

@MarcRasmussen請參考最新的答案。 –