Autor Zpráva
Prochy
Profil
Dobré ráno,

potřeboval bych poradit s jedním problémem. Mám aplikaci na zpracovávání úkolů, a potřeboval bych měřit čas jejich zpracování. To počítání je vyhraněno časy, takže např. se to počítá jen v pondělí-pátek od 8-16 hodin, sobota 8-12h. Napadlo mě jednoduché řešení pomocí Cronu, kde bych kontroloval, jestli je úkol v řešení a je v rozmezí toho počítacího období a přičetl např. každých pět minut 5 minut. Ale bojim se, že by to bylo nespolehlivé.

Další co mě napadlo je ukládat si čas do db, kdy se řešil. Takže bych do db uložil datum např. 2013-07-01 10:05 a 2013-07-04 18:00. Ale nějak mě v tomto případě, jak to vyřešit. Potřeboval bych nějak to rozdělit na pole jednotlivých dnů a pak bych to zvládnul nějak vypočítat. Říkal sem si, že bych odečetl vždy následujicí den to znamená 2013-07-01 10:05 mínus 2013-07-02 0:00 vyšel by mi rozdíl 13 hodin a 55 minut. Poté bych odečetl čas 24-16=8 h a poté by čas od 0 do 16-8=8h byl pracovní čas.

Napadá někoho lepší řešení? Přijde mi tohle poměrně složité, a čekal bych, že by to šlo řešit elegantněji, jen mě nic lepšího zatím nenapadlo a už sem nad tím poměrně dlouho bádal, tak žádám o pomoc. :-)

Děkuji za případné náměty na lepší řešení.
ts_istudio
Profil
Prochy:
Řešíš přesně co? Sběr těch časů nebo ten výpočet? Když si to ošetříš a budeš s jistotou vědět, že každý lichý čas je příchod a každý sudý odchod, dávej to prostě do tabulky a použij DATEDIFF.

Napadlo mě jednoduché řešení pomocí Cronu, kde bych kontroloval, jestli je úkol v řešení a je v rozmezí toho počítacího období a přičetl např. každých pět minut 5 minut.
Tohle vůbec nechápu.
Prochy
Profil
Omlouvám, se za opožděnou reakci, byl sem pracovně mimo.

Myslel jsem, že sem se vyjádřil jasně. Budu mít úkol, který má určitý stav: řeší se, neřeší, čeká se atd.... Počítat se musí pouze, když se řeší. Takže mám tabulku, kde ukládám časy stavu řeší se např.:

datum od: 2013-07-04 15:00, datum do: 2013-07-06 9:35
datum od: 2013-07-08 12:00, datum do: 2013-07-09 11:11

Poté mám tabulku, kde pro každý den je nastaveno, v jakém čase se má počítat řešení např. Pondělí 8-16h, Úterý 8-16h atd..

A já potřeboval součet těch časů, kdy se to řešilo, ale započítat pouze ty hodnoty v rozmezí 8-16h, takže např. pro datum od: 2013-07-04 15:00, datum do: 2013-07-04 9:35
to máme první den 1hodinu, 2 den 8 hodin atd.., poslední 1h 35m + další rozmezí času

Nakonec sem si vymyslel funkci, která mi pro zadané hodnoty vypočítá dané časy, ale dalo mi to poměrně hodně zabrat.
Tori
Profil
Prochy:
A co kdybyste si do té tabulky přidal sloupec uctovany_cas (typu TIME), tj. čas strávený nad úkolem v pracovní době, a ten byste dopočítal mimo DB před uložením "datum_do"?
Prochy
Profil
Tori:
To je dobrý nápad, nějak mě to nenapadlo, děkuji za pomoc. :-)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: