Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Время в графике действий - как хранить?  [new]
Bely
Member

Откуда: Москва
Сообщений: 1903
Есть следующая задача:
Имеется график операций, который отрабатывается внешней процедурой.
Внешняя процедура запускается по JOB-у (например раз в 15 минут).
В графике хранится время (часы и минуты) когда операция должна сработать (не раньше чем в это время каждый день).

Т.е. если в графике стоит:
'13:30', 'Загрузка файла - тип 1'
'14:05', 'Загрузка файла - тип 2'
то эти действия должны произойти в 13:30 и 14:15

График составляет пользователь самостоятельно.

Встал вопрос как хранить время запуска операции, чтобы это было удобно использовать.

Рассматривались варианты:
1) Текст - потом делать to_date() и смотреть текущее время и т.д.
Не красиво, как-то. Не текст это вовсе.
2) DATE - использовать от нее только временную часть и сравнивать с датой последнего запуска.
Здесь много чехарды и плясок вокруг получения только временной части.

Может что-то еще предложите?
15 мар 07, 13:09    [3901906]     Ответить | Цитировать Сообщить модератору
 Re: Время в графике действий - как хранить?  [new]
Бабичев Сергей
Member

Откуда:
Сообщений: 2498
Bely
Здесь много чехарды и плясок вокруг получения только временной части.
Как раз-таки вокруг этого никаких плясок и чехарды нет. Там все просто и прозрачно до неприличия...
15 мар 07, 13:13    [3901944]     Ответить | Цитировать Сообщить модератору
 Re: Время в графике действий - как хранить?  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116077
Бабичев Сергей
Bely
Здесь много чехарды и плясок вокруг получения только временной части.
Как раз-таки вокруг этого никаких плясок и чехарды нет. Там все просто и прозрачно до неприличия...

+1
ИМХО
Время надо хранить в предназначенном для этого типе.
Все остальное - неверный дизайн ...
15 мар 07, 13:15    [3901960]     Ответить | Цитировать Сообщить модератору
 Re: Время в графике действий - как хранить?  [new]
Bely
Member

Откуда: Москва
Сообщений: 1903
Бабичев Сергей
Как раз-таки вокруг этого никаких плясок и чехарды нет. Там все просто и прозрачно до неприличия...
Прозрачно, то прозрачно...
У меня вот такие конструкции получаются.
Хочется быть проще :)

with sh as
(
SELECT 1 as ID, to_date('11:10','HH24:MI') as DT_START from dual union all
SELECT 2 , to_date('18:10','HH24:MI')  from dual 
)
, sh_log as
(
SELECT 'V1' as VAR_START, trunc(sysdate) as LAST_START from dual union all
SELECT 'V2', trunc(sysdate)+(to_date('14:00','HH24:MI')-to_date('00:00','HH24:MI')) from dual 
)
 
SELECT 
  (trunc(sh.DT_START)-sh.DT_START)
  , sh.*
  , sh_log.*
FROM sh, sh_log
WHERE (trunc(sysdate)+(sh.DT_START - trunc(sh.DT_START))) > sh_log.LAST_START
  and (trunc(sysdate)+(sh.DT_START - trunc(sh.DT_START))) <= sysdate
15 мар 07, 13:46    [3902206]     Ответить | Цитировать Сообщить модератору
 Re: Время в графике действий - как хранить?  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6910
Bely
Встал вопрос как хранить время запуска операции, чтобы это было удобно использовать.

2) DATE - использовать от нее только временную часть и сравнивать с датой последнего запуска.
Здесь много чехарды и плясок вокруг получения только временной части.

а что Вы хотите услышать? какой-то новый тип? или NUMBER?
ИМХО точность TIMESTAMP здесь не нужна :) остается DATE
15 мар 07, 13:47    [3902227]     Ответить | Цитировать Сообщить модератору
 Re: Время в графике действий - как хранить?  [new]
Bely
Member

Откуда: Москва
Сообщений: 1903
alex-ls
а что Вы хотите услышать? какой-то новый тип? или NUMBER?
ИМХО точность TIMESTAMP здесь не нужна :) остается DATE
Хотел - совет.
Ладно, пойду даты мучать... всем спасибо!!!
15 мар 07, 13:49    [3902244]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить