У меня два запроса: (один вычисляет сумму записей, а другой выбирает все записи)
Query 1:
select sum(tb_nominal) from tb_sec_tran where tb_account_id = 112 and tb_security_id = 234
and trunc(tb_execution_time) < trunc(to_date('31-12-2017','dd-mm-yyyy');
Query 2: select tb_nominal from tb_sec_tran where tb_account_id = 112 and tb_security_id =
234 and trunc(tb_execution_time) < trunc(to_date('31-12-2017','dd-mm-yyyy');
Что лежит в базе данных.
tb_nominal | tb_execution_time
520 | 08-MAR-17
486 | 04-JAN-18
520 | 01-JAN-18
-520 | 31-DEC-17
Случай 1: Я выполнил эти два запроса в базе данных (sql developer). Для первого запроса я получаю 520.0 в качестве вывода. По второму запросу я получаю 1 запись в выводе с tb_nominal = 520.0.
Случай 2: на платформе Java, я реализовал следующий код:
PreparedStatement pstmt = null;
ResultSet rs = null;
Double sum = null;
StringBuffer sql = new StringBuffer(" select sum(tb_nominal) from tb_sec_tran where
tb_account_id = ? and tb_security_id = ? and trunc(tb_execution_time) < trunc(?) ");
pstmt = m_Connection.prepareStatement(sql.toString());
pstmt.setLong(1, spekuVO.getContent().getAccountId());
pstmt.setLong(2, spekuVO.getContent().getInstrumentId());
pstmt.setDate(3, toDate.getSQLDatum());
rs = pstmt.executeQuery();
if (rs.next()) {
sum = rs.getDouble(1);
}
Проблема: Поэтому, когда я запускаю код, вместо номинального значения 520,0, я получаю сумму как 0,0, которая отличается от того, что было возвращено в базе данных. Точно так же, если я внесу изменение в переменную sql, удалив слово суммы, чтобы сделать его похожим на запрос 2, я получу две записи, как на изображении, которое я прикрепил.
Я совершенно сбит с толку странным поведением. Есть ли какие-либо изменения в обработке JAVA 8 по сравнению с JAVA 6, связанные с этим?
Пожалуйста, предложите мне, если есть причины для такого поведения.