Я пытаюсь найти пропущенные записи для задачи, которая выполняется каждый час, но иногда дает сбой.Задача создает записи с отметкой времени start_datetime.
У меня также есть таблица с каждой датой / временем для одного и того же диапазона, при этом ни одна из них не пропущена.
То, что я, по сути, хочу, это что-то вроде этого, который должен найти все даты в таблице аудита, которых нет в таблице, в которой заданы задачи:
select audithour
from lkup_audithour ahr
where audithour <= sysdate
and audithour not in (select start_datetime from myTable);
Но это не сработает, поскольку задача может начаться на несколько минут позже, чемначало часа, поэтому, хотя дата и час совпадают, минуты могут не совпадать.И это нормально.
То, что я придумал, ужасно, сравнивая год, месяц, день и час вручную.Есть ли лучший способ сделать это?
select audithour
from lkup_audithour
where audithour <= sysdate
and audithour not in (
select audithour
from lkup_audithour lah
join MyTable mt
on extract(year from lah.audithour) = extract (year from mt.start_datetime)
and extract(month from lah.audithour) = extract (month from mt.start_datetime)
and extract(day from lah.audithour) = extract (day from mt.start_datetime)
and extract(hour from cast(lah.audithour as timestamp)) = extract (hour from cast(mt.start_datetime as timestamp))
)