2016-11-28 9 views
0

У меня есть таблица, у которой есть столбец date_col. Существует работа, которая извлекать данные из этой таблицы каждый 5 минуткак записывать запись в оракуле sql 10g, когда разница во времени составляет 5 минут

Я хочу, чтобы забрать записи, которые изменились в последних 5 минут

Сходства для другой таблицы оно 1 час

Как я могу сделать что?

+0

Обновляется ли date_col после каждого обновления или просто используется при вставке? – Ubercool

+0

вы также можете использовать ** SYSDATE - NUMTODSINTERVAL (5, 'Minute') ** или ** SYSDATE - NUMTODSINTERVAL (1, 'Hour') ** как ваше условие – hmmftg

ответ

1

Очень просто в оракуле с помощью функции sysdate. Эта функция возвращает текущее значение даты с сервера БД.

так что вы можете использовать что-то вроде -

select * 
    from <your-table> 
    where date_col > sysdate - ((5/24)/60) 

так же в течение одного часа - sysdate - (1/24)

надеюсь, что это помогает вам в вашей задаче.

1

Предполагая, что ваш date_col провести ревизию последнего изменения записи

select * from table1 where date_col between sysdate-(5/(24*60)) and sysdate 
+0

Я также думал об использовании 'between' в sql, но думал верхнего предела ('sysdate') изменило мой разум, чтобы вместо этого использовать просто сравнение'> '. Ну, это также подход для этого. –

0

Мы можем сделать основные арифметические операции с датами 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. Это прекрасно, как первый шаг, но, возможно, недостаточно устойчив для реального приложения. Что произойдет, если ваша работа длится более пяти минут? Или умирает и его нужно перезапустить? Более надежным решением было бы регистрировать время начала работы и собирать записи, которые были затронуты с момента предыдущего запуска.