Мы можем сделать основные арифметические операции с датами Oracle. Поэтому, чтобы найти данные за пять минут назад, мы можем сделать это: where date_col >= sysdate - (5/(24*60))
.
Несколько более выразительный подход использует интервал типа данных. Для диапазонов от дней до секунд есть функция TO_DSINTERVAL(): where date_col >= sysdate - to_ds_interval('0 0:5:0')
. Часовой интервал будет where date_col >= sysdate - to_ds_interval('0 1:0:0')
.
Ваш подход предлагает использовать sysdate. Это прекрасно, как первый шаг, но, возможно, недостаточно устойчив для реального приложения. Что произойдет, если ваша работа длится более пяти минут? Или умирает и его нужно перезапустить? Более надежным решением было бы регистрировать время начала работы и собирать записи, которые были затронуты с момента предыдущего запуска.
Обновляется ли date_col после каждого обновления или просто используется при вставке? – Ubercool
вы также можете использовать ** SYSDATE - NUMTODSINTERVAL (5, 'Minute') ** или ** SYSDATE - NUMTODSINTERVAL (1, 'Hour') ** как ваше условие – hmmftg