Tento kus MySQL dotazu v tabulce (kromě pár zbytečných hodnot které jsou tam jen pro názornost) by měl spočítat čas strávený na projektu nebo klientově webu. Počítá se jen čas mezi záznamy, který nepřesáhne např. 30 minut (já mám 01:30:00).
Stačí k tomu tabulku, kde logujeme čas a ip adresu.

  1. SET @last:=NULL;
  2. SELECT
  3. @last,
  4. dtime,
  5. if(TIMEDIFF(dtime,@last) < TIME('00:30:00'),TIMEDIFF(dtime,@last),0) as worktime,
  6. @last:=dtime
  7. FROM custsite_stats WHERE ip="86.115.160.9"
  8. ORDER BY id

Výsledek zřejmě bude třeba sečíst v PHP.
Pokud přijdete na to,jak to sečíst rovnou v MySql, je tady dole místo pro komentáře.

Update:
Čas je třeba sčítat pomocí ADDTIME(), výsledný dotaz vypadá takto:

  1. SET @before:=NULL;SET @cnt:=TIME('0:0:0');SET @threshold=TIME('0:30:0');
  2. SELECT
  3. @before,
  4. dtime,
  5. if(TIMEDIFF(dtime,@before) < @threshold,TIMEDIFF(dtime,@before),0) as `worktime`,
  6. @cnt:= ADDTIME (
  7.    @cnt,
  8.    if(TIMEDIFF(dtime,@before) < @threshold,TIMEDIFF(dtime,@before),0)
  9. ) as `sum`
  10. ,@before:=dtime
  11. FROM custsite_stats
  12. WHERE ip="86.115.160.9"
Hlasujte pro tento článek:
  • Bookmarky.cz
  • Digg
  • del.icio.us
  • Google
  • Linkuj
  • Vybrali.sme
  • E-mail this story to a friend!
  • Facebook
  • LinkedIn

Komentáře

Váš komentář: