Topic: Darbo valandu skaiciavimas

Labas,

kaip butu galima suskaiciuoti darbo valandu skaiciu?

Turiu tokia lentele: ID|darbo_pradzia|darbo_pabaiga

pvz irasas:

1|2013-01-14 10:00:00|2013-01-16 11:30:00

ir reikia suskaiciuoti kiek darbo valandu buvo tarp pastaruju dvieju valandu;
jeigu tai yra darbo dienos tai darbo laikas nuo 8 iki 5 jei savaitgaliai nuo 9 iki 5

datos stulpelis - timestamp without time zone
Duomenu baze - Postgres.

Re: Darbo valandu skaiciavimas

o kas nesigauna? Tai pasiemi laikus, verti i UNIX_TIMESTAMP ju skirtumas bus isdirbtas laikas sekundemis. Tik cia jau pagal savo architektura ir serveri ziurek ar DB sitai atliksi ar script'e.

Re: Darbo valandu skaiciavimas

Ką turėjote omeny "kitas sistemas"? Oracle/Java ar dar kažką? Naudojama bus MySQL/PHP. Lentelių kiekis gali būti apie 150, o įrašų kiekis kai kuriose lentelėse pasieks 100 mlj. ir daugiau. Kiekvieną dieną ji greitu tempu bus pildoma ir greitai augs.

Re: Darbo valandu skaiciavimas

MySQL'as, kaip beveik visos kitos sistemos, tokių standartinių funkcijų, suskaičiuoti darbo valandas tarp dviejų datų neturi. Taigi šiuo atveju, tu suskaičiuoti kiek darbo valandų turi jau prieš įrašydamas į antrą stulpelį darbo pabaigos datą. Ir darbo valandas reikėtų irgi papildomai užsisaugoti naujame - trečiame stulpelyje.

O kaip skaičiuoti, tai gali pats galvoti. Esu kažkada daręs tą skaičiavimą, kur įvertinamos ir švenčių dienos, bet tai yra ilgas algoritmas ir aš jo dabar neturiu (programuota su C#). Gali internete pasižiūrėti minčių:
http://stackoverflow.com/questions/5274 … -two-dates
http://forums.teradata.com/forum/databa … mp6-fields
http://chandoo.org/wp/2010/09/10/working-hours-formula/

Re: Darbo valandu skaiciavimas

Sveiki;

panašiai gali būti į šitą:

select time_to_sec(timediff('2010-09-01 03:00:00', '2010-09-01 00:10:00' )) / 3600;