我是Java JDBC的新手。我正在嘗試創建一個JDBC準備語句,以在兩個Oracle DATE值之間執行SELECT操作。 我知道這兩個時間之間存在數據,因爲我可以直接進行查詢。JDBC setDate與預處理語句不兼容
當我從我的JDBC代碼中執行準備的語句,但是,它返回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') and to_date('2012),timecaptured,onewaymaxdelay,twowaymaxdelay,twowaymaxdelayvar,packetloss from oam1731data5 where timecaptured between to_date -01-18 08:00:00','YYYY-MM-DD HH24:MI:SS') order by insert_date
DBMS_OUTPUT:
INSERT_DATE記錄源SERVICEID TIMECAPTURED ONEWAYMAXDELAY TWOWAYMAXDELAY TWOWAYMAXDELAYVAR分組丟失
1/18/2012上午10點43分36秒EV TAMP20-硝基 - NID1SYRC01-硝基 - NID1 1 /二千零十二分之十八上午07點25分24秒40822 79693 343 0
1/18/2012上午10時43分36秒EV SYRC01-硝基 - NID1TAMP20-硝基 - NID1 1/18/2012上午07點25分13秒39642 79720 334 0
2012/1/18 10:43:36 EV TAMP20-MTRO-NID1SYRC01-MTRO-NID1 2012年1月18日
我已經看到並準備好了很多關於這個問題的帖子,但並不是 able找到鑰匙呢!
我想過試圖讓我的查詢使用字符串,只是我的日期轉換爲字符串能夠插入他們的Oracle TO_DATE功能,但好像我不應該這樣做。
這裏是我的println語句的輸出。打印日期不顯示時間部分是否是一個問題?
SQL查詢:從oam1731data5 timecaptured WHERE之間timecaptured?和? Java的Oracle日期:2012-01-18結束日期2012-01-18
預先感謝任何幫助。
米奇
我不認爲會。基本上,查詢搜索所有行的日期和時間爲2012年1月18日00:00:00至2012年1月18日00:00:00。顯然,沒有任何。 –
我不確定該查詢是否搜索2012年1月18日00:00:00至2012年1月18日00:00:00之間的所有行。如果是這樣,你顯然是對的。要理解的最好方法是他改變開始日期的價值並嘗試。 –