0

プログラムに次の 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

ただし、DBに次のように書き込むと:

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

私は結果を得る..それで、問題は何ですか? それは私にエラーや何かを与えていません

4

1 に答える 1

1

startendjava.sql.Dateオブジェクトであると仮定すると (そうでない場合は変換してください)、 PreparedStatementwith を使用しsetDate()て以下のように日付を設定することをお勧めします。

   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();

編集: java.sql.DateJodaDateTimeオブジェクトから取得するには、以下を実行してください。

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

これらの変換されたオブジェクトをクエリで使用します。

于 2012-12-07T15:09:02.050 に答える