Конференция "Базы" » Попадание времени в расписание [firebird 2.5]
 
  • makz (03.12.11 11:46) [0]
    Где можно подглядеть алгоритм проверки попадания timestamp в расписание по типу task shcheduller'а в windows(записи типа "по вторникам", "последний понедельник месяца", "каждое 1, 3, 5 число")?  
    Сделал базу с расписанием:

    CREATE TABLE TIMETABLE (
       ID          TID NOT NULL /* TID = INTEGER */,
       SPECIALIST  FKEY NOT NULL /* FKEY = INTEGER */,
       REJIM       TINTPARAM /* TINTPARAM = INTEGER */,
       BEGTIME     TIME NOT NULL,
       ENDTIME     TIME NOT NULL,
       BEGDATE     DATE NOT NULL,
       ENDDATE     DATE,
       MONTHS          VARCHAR(100),
       DAYS              VARCHAR(100),
       DAYSOFWEEK   VARCHAR(30)



    В поле REJIM - режим работы (по дням, по дням недели, по дням месяца, по дням недели и месяца)
    В полях MONTHS, DAYS, DAYSOFWEEK через запятую номера месяцев и т.д.
    SPECIALIST - внешний ключ.
    Осталось самое простое :) :написать процедуру проверки попадания заданного TIMESTAMP в график. Нет ли где подобного, не обязательно на firebird?
  • Плохиш © (03.12.11 13:06) [1]
    Алгоритм полностью совпадает с алгоритмом определения дня рождения и каникул.
  • DiamondShark © (03.12.11 15:09) [2]

    > makz   (03.12.11 11:46) 

    1. Проверить на попадание в диапазон BEGDATE .. ENDDATE.
    2. Разобрать TIMESTAMP на компоненты: день, месяц, день недели, время
    3. проверить компоненты на попадание в свои диапазоны и списки.

    В чём проблема-то?
  • makz (04.12.11 06:13) [3]
    Проблем то нет, кроме того что возни много: лень велосипед изобретать.
  • Ega23 © (04.12.11 16:52) [4]

    > Где можно подглядеть алгоритм проверки попадания timestamp
    > в расписание по типу task shcheduller'а в windows(


    Там не так сделано. Там вычисляется время следующего запуска.
  • DiamondShark © (05.12.11 02:45) [5]

    > Ega23 ©   (04.12.11 16:52) [4]

    Что совой об пень, что пнём по сове.


    > makz   (04.12.11 06:13) [3]

    Хороший подход.
    Вот смотри, с 03.12.11 11:46 по 04.12.11 06:13 сколько времени прошло? Грубым счётом -- 18 часов. А задача не решена. Хотя изобретение велосипеда даже у новичка заняло бы пару часов.
    Экономии на копейку, потерь на рубль -- вот цена халявы.
 
Конференция "Базы" » Попадание времени в расписание [firebird 2.5]
Есть новые Нет новых   [134431   +10][b:0][p:0.001]