Я довольно новичок в Java JDBC. Я пытаюсь создать подготовленное заявление JDBC для выполнения SELECT между двумя значениями Oracle DATE.
Я знаю, что между этими двумя данными существуют данные, так как я могу выполнить запрос напрямую.
Когда я выполняю подготовленный оператор из своего кода JDBC, он возвращает 0 строк.
Мои начальные и временные значения ввода представляют собой значения времени Long 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, источник записи, serviceid, время захвата, onewaymaxdelay, twowaymaxdelay, twowaymaxdelayvar, потеря пакета из oam1731data5
где время отсчитывается между датой до (2012-01-18 07:00:00, YYYY-MM-DD HH24: MI: SS ')
и to_date («2012-01-18 08:00:00», «ГГГГ-ММ-ДД ЧЧ24: MI: СС»)
упорядочить по дате вставки
DBMS_OUTPUT:
INSERT_DATE RECORDSOURCE SERVICEID TIMECAPTURED ONEWAYMAXDELAY TWOWAYMAXDELAY TWOWAYMAXDELAYVAR PACKETLOSS
1/18/2012 10:43:36 AM EV TAMP20-MTRO-NID1SYRC01-MTRO-NID1 18.01.2012 7:25:24 40822 79693 343 0
18.01.2012 10:43:36 EV SYRC01-MTRO-NID1TAMP20-MTRO-NID1 18.01.2012 7:25:13 39642 79720 334 0
18.01.2012 10:43:36 EV TAMP20-MTRO-NID1SYRC01-MTRO-NID1 18.01.2012
Я видел и готов много постов о проблемах, подобных этому, но не был
смог найти ключ еще!
Я думал о том, чтобы попытаться заставить мой запрос использовать строку и просто преобразовать мои даты в строки, чтобы можно было вставить их для функции Oracle TO_DATE, но, похоже, я не должен был это делать.
А вот вывод из моих операторов println. Является ли проблемой то, что печатаемые даты НЕ показывают часть времени?
SQL-запрос: ВЫБРАТЬ время, захваченное из oam1731data5, ГДЕ время между? а также ?
Java Oracle дата: 2012-01-18 дата окончания 2012-01-18
Заранее спасибо за любую помощь.
Митч