следующая проблема беспокоит меня, и я не могу найти разумного объяснения и решения. Возможно, кто-то мог бы просветить меня.
У меня есть приложение, которое вычисляет разницу дат (в днях) - в маске поиска и в маске деталей. В первой маске я использую дни, чтобы отфильтровать записи с критериями поиска по продолжительности (маска поиска), и я делаю это с помощью запроса SQL:
WHERE...
...
AND DECODE(TRUNC(to_number(SUBSTR((close_date -
create_date),1,instr(close_date - create_date,' ')))), NULL,
TRUNC(to_number(SUBSTR((systimestamp - create_date),1,instr(systimestamp -
create_date,' ')))), TRUNC(to_number(SUBSTR((close_date -
create_date),1,instr(close_date - create_date,' ')))) ) >=140
AND DECODE(TRUNC(to_number(SUBSTR((close_date -
create_date),1,instr(close_date - create_date,' ')))), NULL,
TRUNC(to_number(SUBSTR((systimestamp - create_date),1,instr(systimestamp -
create_date,' ')))), TRUNC(to_number(SUBSTR((close_date -
create_date),1,instr(close_date - create_date,' ')))) ) <=140
В этом особом случае я пытаюсь выяснить все записи продолжительностью 140 дней.
Во второй маске (Подробности) я показываю детали записи, включая ее продолжительность. Это делается с помощью следующего кода Java:
public static Integer getDuration(Date caseDate, Date closeDate) {
Date beginDate = caseDate;
Date endDate = (closeDate != null)? closeDate: new Date();
long difference = endDate.getTime() - beginDate.getTime();
int daysDiff = (int) (difference / (24.0 * 60 * 60 * 1000));
return new Integer(daysDiff);
}
Моя проблема в том, что при поиске я нахожу некоторые записи, которые соответствуют критериям поиска. Например, я нахожу 4 записи, и все они имеют продолжительность 140 дней. Это в соответствии с Oracle. Но когда я открываю маску Details для некоторых из них, я получаю продолжительность, например, 139 дней. Так что Java и Oracle каким-то образом рассчитывают разницу в датах по-разному. Похоже, что в Oracle происходит некоторое округление, но я не могу найти, где это происходит. Так что любые предложения будут полезны. Спасибо!
Поздравил,
Алмаак