私はJava JDBCを使い慣れていません。私は、2つのOracle DATE値の間でSELECTを実行するためにJDBCのpreparedstatementを作成しようとしています。 私はこれらの2つの時間の間にデータが存在することを知っています。私は直接クエリを実行できます。JDBC setDateはpreparedstatementで動作しません
ただし、JDBCコード内からprepared statementを実行すると、0行が返されます。
私の入力開始時刻と時刻は、ミリ秒単位の長いUnix時間値です。
私は最低限にコードをダウン削り取っしようとしてい:
public static List<Oam1731Sam5Data> getData(Long startTime, Long endTime) {
try {
String query = "SELECT timecaptured from oam1731data5 " +
"WHERE timecaptured between ? and ?";
pstmt = conn.prepareStatement(query); // create a statement
Date javaStartDate = new Date(startTime);
Date javaEndDate = new Date(endTime);
pstmt.setDate(1, javaStartDate);
pstmt.setDate(2, javaEndDate);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
String serviceId = rs.getString("SERVICEID");
String recordSource = rs.getString("RECORDSOURCE");
Date timeCaptured = rs.getDate("TIMECAPTURED");
Long oneWayMaxDelay = rs.getLong("ONEWAYMAXDELAY");
Long twoWayMaxDelay = rs.getLong("TWOWAYMAXDELAY");
Long twoWayMaxDelayVar = rs.getLong("TWOWAYMAXDELAYVAR");
Long packetLoss = rs.getLong("PACKETLOSS");
}
} catch (SQLException se) {
System.err.println("ERROR: caught SQL exception, code: " + se.getErrorCode() +
", message: " + se.getMessage());
}
問題は、これは同じクエリがデータを返す0行、返すことです:
選択insert_date、レコード、サービスIDを( '2012-01-18 07:00:00'、 'YYYY-MM-DD HH24:MI:SS') とto_date(2012年)の間にタイムキャプチャされた時刻からのパケット損失-01-18 08:00:00 '、' YYYY-MM-DD HH24:MI:SS ') 注文:insert_date
DBMS_OUTPUT:
2012年1月18日10時43分36秒AM EV TAMP20-MTRO-NID1SYRC01-MTRO-NID1 1
INSERT_DATEレコードいるServiceID TIMECAPTURED ONEWAYMAXDELAY TWOWAYMAXDELAY TWOWAYMAXDELAYVARパケット損失/ 18/2012 7:25:24 AM 40822 79693 343 0
1/18/2012 10:43:36 AM EV SYRC01-MTRO-NID1TAMP20-MTRO-NID1 1/18/2012 7:25:13 AM 39642 79720 334 0
2012年1月18日午前10時43分36秒AM EV TAMP20-MTRO-NID1SYRC01-MTRO-NID1 2012年1月18日私は見て準備ができて多少このような問題について、多くの記事を、しかしでき をされていないいる
まだ鍵を見つける!
私はクエリに文字列を使用させ、単に日付を文字列に変換してOracle TO_DATE関数に挿入できるようにしようと考えましたが、これを行う必要はないようです。
これは私のprintlnステートメントの出力です。印刷する日付に時間部分が表示されないことは問題ですか?
SQLクエリ:select timecaptured from oam1731data5 where timecaptured between?そして? Java Oracle日付:2012-01-18終了日2012-01-18
ご協力いただきありがとうございます。
ミッチ
私はそうは思わない。基本的に、このクエリは、2012年1月18日00:00:00から1/18/2012 00:00:00までの日付と時刻を持つすべての行を検索します。明らかに、何もありません。 –
このクエリで、日付が1/18/2012 00:00:00から1/18/2012 00:00:00までのすべての行を検索しているかどうかわかりません。そうであれば、明らかに正しいです。理解するには、開始日の値を変更してそれを試してみてください。 –